220 34254 <d9001051-0946-4dcf-bf78-8bcdb8302989@isocpp.org> article
Path: news.gmane.org!.POSTED!not-for-mail
From: Rich Sposato <rich.sposato@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Proposal to add constructors to std::bad_alloc
 exception class.
Date: Fri, 1 Sep 2017 12:28:44 -0700 (PDT)
Lines: 3057
Approved: news@gmane.org
Message-ID: <d9001051-0946-4dcf-bf78-8bcdb8302989@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_2952_496205681.1504294124648"
X-Trace: blaine.gmane.org 1504294141 32430 195.159.176.226 (1 Sep 2017 19:29:01 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Fri, 1 Sep 2017 19:29:01 +0000 (UTC)
To: ISO C++ Standard - Future Proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBDNJHDWPTQMBB3PJU3GQKGQENU7X46I@isocpp.org Fri Sep 01 21:28:50 2017
Return-path: <std-proposals+bncBDNJHDWPTQMBB3PJU3GQKGQENU7X46I@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-it0-f69.google.com ([209.85.214.69])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBDNJHDWPTQMBB3PJU3GQKGQENU7X46I@isocpp.org>)
	id 1dnrcP-0007Rl-1X
	for gclcip-std-proposals@m.gmane.org; Fri, 01 Sep 2017 21:28:41 +0200
Original-Received: by mail-it0-f69.google.com with SMTP id b76sf526161itb.6
        for <gclcip-std-proposals@m.gmane.org>; Fri, 01 Sep 2017 12:28:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=date:from:to:message-id:subject:mime-version:x-original-sender
         :reply-to:precedence:mailing-list:list-id:list-post:list-help
         :list-archive:list-subscribe:list-unsubscribe;
        bh=3TH47Vnkt7uBIoB8tb/jbRFuZ1+CAPBwg88NBvnvq0Y=;
        b=ew2VauTDFU4H5R5HCoMJ7gCC2JuIQ9nC7ZnFBz7uK/dZbu89I78IQEGcF3yBCWvdFj
         ZM9nTi34VbWPrsXnz6IgD3hJ5+BjgFiK09cwWfPaTtYgV3eBQo/UfMzCuXUj+UA2RdfZ
         TA3dPVRqhwz5NF3wukxFvr9HwO4CNwkUMoPbaYuuCHN9R9BT1+yM21J+ZEN3RGCExYJk
         j5lQJ8aj/tYmezN15tj1L0les9o0wKwaNTxHyDJWmqI4b/58o6hEK46xqfG/1Oc1edVH
         OuFY6Lv1EVHmCOZFJuM0cwkXJMVbsYKqi3gT5fxeVeiJCwCp116bDlbIHv/7LkpdCrRt
         Z1zA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20161025;
        h=date:from:to:message-id:subject:mime-version:x-original-sender
         :reply-to:precedence:mailing-list:list-id:list-post:list-help
         :list-archive:list-subscribe:list-unsubscribe;
        bh=3TH47Vnkt7uBIoB8tb/jbRFuZ1+CAPBwg88NBvnvq0Y=;
        b=PCngT39zRf+aywt/3Or6PxBQ+VufG8JDegt9R4jzqMI9TSzinRFtWe0kI/bv1PAJBN
         OIdQZCNYhw+OtNADbg9NvbCzOzfuY0lCwYA+613fEeVdx6v6uXBJPczgUZdKHRtfjwnf
         cJjVmIeCbFPInaCTxEAwa7QL9vWPZ/sNnHWwaIQhSQJWrJIDkjtD+eSE8r9Z2Jpgh2xD
         uH/WtrhaPOBy7yhYu5ntaf66W71NHUDyl8YDSG2DFVT+Glr1d7Y6+LTNrFFepmLTUger
         VfffcsHcueQsVT1NDpW/2Y82pHs4hNuH6LOQ0pO69vBdhGCBGv7UfhF3nmQz9xwV3qhE
         sqhA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20161025;
        h=x-gm-message-state:date:from:to:message-id:subject:mime-version
         :x-original-sender:reply-to:precedence:mailing-list:list-id
         :x-spam-checked-in-group:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=3TH47Vnkt7uBIoB8tb/jbRFuZ1+CAPBwg88NBvnvq0Y=;
        b=WXAZDVA+2p3NPbXAWGLy3PcbU6MUJPIsuXH4ndkQ23FiP+C0LCOsexOmgrMMF1Yfrm
         wDVtnIVaXa+cu4dmhXFh2TRRId8guq+y0kVLuWzzMBwqS0cC2VgAfPF/2Uu5xyChfKPH
         f7PO9YxhUnp0yGG2fpFm7c5LKqJ0S6CkGWVA6eYiewaiT38AVRhdxNLiISzcOC9Ld1vH
         cexu1G23aB8hGCeMm6hm1akMcR7jrQZcGn2Da6AiCLVvDNY7aoIoNOEW/vTnKRzfp3GC
         vQ+vuajGygSsY6ME8OyDLnEc3CzeNRVNBwNjBT0XelPoXUMKYBzadgNPDI9+DVY/kIaE
         ZfBg==
X-Gm-Message-State: AHPjjUg/QZpSAo4Y1tJIPHYC883vbEKQ3AaKy+X5sbVrukX7rom2jkwu
	NOuqeffH5t+J+cn9
X-Google-Smtp-Source: ADKCNb7tAbsdtXRuMEhOHF0XkW0aM0EaIRKVvWQgCZVG/Vv0PVufs1mYlTJXESbbo7Vxh2rgLIbnBA==
X-Received: by 10.107.151.193 with SMTP id z184mr5683771iod.79.1504294127287;
        Fri, 01 Sep 2017 12:28:47 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.36.79.76 with SMTP id c73ls1530001itb.10.canary-gmail; Fri, 01
 Sep 2017 12:28:45 -0700 (PDT)
X-Received: by 10.31.146.11 with SMTP id u11mr83232vkd.22.1504294125248;
        Fri, 01 Sep 2017 12:28:45 -0700 (PDT)
X-Original-Sender: rich.sposato@gmail.com
Precedence: list
Mailing-list: list std-proposals@isocpp.org; contact std-proposals+owners@isocpp.org
List-ID: <std-proposals.isocpp.org>
X-Google-Group-Id: 399137483710
List-Post: <https://groups.google.com/a/isocpp.org/group/std-proposals/post>, <mailto:std-proposals@isocpp.org>
List-Help: <https://support.google.com/a/isocpp.org/bin/topic.py?topic=25838>, <mailto:std-proposals+help@isocpp.org>
List-Archive: <https://groups.google.com/a/isocpp.org/group/std-proposals/>
List-Subscribe: <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>,
 <mailto:std-proposals+subscribe@isocpp.org>
List-Unsubscribe: <mailto:googlegroups-manage+399137483710+unsubscribe@googlegroups.com>,
 <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:34254
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/34254>

------=_Part_2952_496205681.1504294124648
Content-Type: multipart/alternative; 
	boundary="----=_Part_2953_1219705336.1504294124651"

------=_Part_2953_1219705336.1504294124651
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi,

I wrote this proposal after discovering the std::bad_alloc exception class=
=20
<http://en.cppreference.com/w/cpp/memory/new/bad_alloc> only has a default=
=20
constructor. Other exception classes have constructors with a string=20
parameter. The lack of a similar constructor in bad_alloc has caused=20
problems for me.

This is the second draft of this proposal. Please provide feedback on how=
=20
to improve it before I submit it.

I would especially prefer feedback on wording and style so that it conforms=
=20
with the wording and style of accepted proposals. I would also like=20
feedback on technical correctness.

If anybody has insights on upcoming changes to the standard exception=20
classes that might affect this proposal, please let me know.

If you prefer a Word document version of this proposal, please let me know.

Thanks,

Rich Sposato

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

The bad_alloc Constructor Parameter Proposal

=20

By Richard Sposato

September 2017

Contents

I.       Introduction. 1 <#_Toc492030627>

II.      Technical Specifications. 1 <#_Toc492030628>

III.    Motivation. 2 <#_Toc492030629>

IV.    Impact on the Standard. 5 <#_Toc492030630>

V.     Design Decisions. 5 <#_Toc492030631>

VI.    Acknowledgements. 5 <#_Toc492030632>

VII.   References. 5 <#_Toc492030633>

=20

=20
I.       Introduction=20


A proposal to add two constructors to the std::bad_alloc class so it=20
conforms to other exception classes.


*Intended Audience:*

These changes are intended for C++ programmers of intermediate through=20
expert skill level who are either authors or users of memory allocation=20
libraries.

=20
II.     Technical Specifications=20

The current implementation of bad_alloc class supports only the default=20
constructor. To avoid breaking existing code, this constructor will=20
continue to exist, and will provide an implementation defined explanatory=
=20
string for the what() function.


bad_alloc();


The two additional constructors will accept either a reference to const=20
std::string or a pointer to a C-style string. These constructors will look=
=20
identical to constructors in other exception classes.

explicit bad_alloc( const std::string & what_arg );

explicit bad_alloc( const char * what_arg );


An alternate constructor would use a string_view parameter instead of=20
either of the two above constructors.

explicit bad_alloc( std::string_view what_arg );

=20

Each will construct a bad_alloc exception object that stores what_arg as an=
=20
explanatory string that can be accessed through the what() function.

=20
III.  Motivation=20


There are several motivations for this proposal. Each of these will be=20
described in detail.

1.      Conformance to existing exception classes.

2.      Ease of making templates that construct exceptions.

3.      Ease of deriving subclasses from exception classes.

4.      Changes to C++17 new and delete operators.

5.      Allowing allocators to inform callers exactly why allocations=20
failed.

=20

*1.      **Conformance to existing exception classes.*


All other exception classes in the std namespace provide constructors that=
=20
accept either a single parameter of either a reference to a const=20
std::string or a pointer to a C-style string. The parameter provides a=20
human-readable explanation for why the program threw an exception or=20
actionable information allowing the calling code to correct the problem.

=C2=B7         logic_error

=C2=B7         invalid_argument

=C2=B7         domain_error

=C2=B7         length_error

=C2=B7         out_of_range

=C2=B7         runtime_error

=C2=B7         range_error

=C2=B7         overflow_error

=C2=B7         underflow_error

=C2=B7         tx_exception


Conformance to other exception classes will enable motivations two and=20
three for this proposal.

=20

*2.      **Ease of making templates that construct exceptions.*

*3.      **Ease of deriving subclasses from exception classes.*


Motivations #2 and #3 are related. They can be explained with a single=20
example that uses both templates and inheritance to show why bad_alloc=20
constructors should accept an explanatory string parameter.


Classes that derive from the standard exceptions cannot call the bad_alloc=
=20
constructor using the same code they would to call other exception classes.=
=20
This example illustrates how to wrap existing exception classes with a=20
smart-exception class that derives from standard exceptions.


template < class ExceptionType >

class SmartException

{

public:

      SmartException( const char * message,

unsigned int line, const char * function ) :

            *ExceptionType( message ),*

            line_( line ),

            functionName_( function )

      {}

      // ... rest of class ...

private:

      unsigned int line_;

      const char * functionName_;

};


The SmartException constructor will call a subclass constructor that=20
accepts a string parameter. This works for most exceptions, but not=20
bad_alloc.


These lines define various smart exceptions using the above class and=20
typedefs.


typedef SmartException< std::bad_alloc > SmartBadAllocException;

typedef SmartException< std::logic_error > SmartLogicErrorException;


This function shows how code would throw a smart exception so any code=20
catching the exception can report exactly where the problem occurred.


void * Allocator::Allocate( std::size_t bytes, std::size_t alignment )

{

      void * place =3D FindPlace( bytes, alignment );

      if ( place =3D=3D nullptr )

      {

            *throw SmartBadAllocException( =E2=80=9CError! Unable to alloca=
te=20
bytes.=E2=80=9D,*

*                  __LINE__, __FUNCTION__ );*

      }

      return place;

}

=20

*4.      **Changes to C++17 new and delete operators.*


There are several additional new and delete operators in the C++17=20
standard. The additional operators all have a std::align_val_t parameter to=
=20
support alignment-aware allocators. The std::align_val_t parameter will=20
become part of class-specific new and delete operators along with the=20
global operators.


void * operator new( std::size_t count, std::align_val_t al);

void * operator new[]( std::size_t count, std::align_val_t al);

void operator delete( void * ptr, std::size_t sz, std::align_val_t al );

void operator delete[]( void * ptr, std::size_t sz, std::align_val_t al );

=20

Alignment-aware allocators would be unable to allocate the required number=
=20
of bytes if the alignment is incorrect. (e.g. =E2=80=93 The caller requests=
=20
alignment on 16 byte boundaries, but the allocator only supports alignment=
=20
on 4 or 8 byte boundaries.) If the allocator throws a bad_alloc exception=
=20
for the invalid alignment, the caller may assume the program is out of=20
memory instead of assuming the alignment is incorrect. Such a caller may=20
call a new_handler believing it will make more memory available. A=20
new_handler could spend an enormous amount of time looking for memory that=
=20
is available only to find none, simply throw another bad_alloc exception,=
=20
or terminate the program by calling std::abort or std::exit. None of these=
=20
actions will resolve the simple problem of using the correct alignment.


A caller that is correctly informed the alignment is invalid could merely=
=20
repeat the request with a different alignment value. This is a low cost=20
action that provides the intended result =E2=80=93 allocating a chunk of me=
mory=20
with the correct alignment.


This means that a bad_alloc exception with a valid explanatory string could=
=20
provide the caller with actionable information to solve the problem, while=
=20
a bad_alloc exception with no (or an inaccurate) explanatory string would=
=20
lead the caller to perform an expensive or program-ending action.


When the std::align_val_t parameter is added to class-specific new and=20
delete operators, users will be able to choose alignments that are not=20
supported by the allocators they use. (This proposal assumes the global new=
=20
and delete operators will support all alignment values in the=20
std::align_val_t type, and thus it will be impossible to call a global=20
memory operator with an invalid alignment value.)

=20

*5.      **Allowing allocators to inform callers exactly why allocations=20
failed.*


Allocations may fail for reasons other than the program ran out memory.=20
There are specialized allocators that only handle requests for specific=20
sizes, such as pool allocators, that could throw exceptions if they receive=
=20
requests for sizes they cannot handle.


This example shows how an allocator might throw a bad_alloc exception with=
=20
actionable information.


void * PoolAllocator::Allocate( std::size_t bytes, std::align_val_t=20
alignment )

{

      if ( ( bytes < minAllowedSize ) || ( maxAllowedSize < bytes ) )

      {

            throw *SmartBadAllocException(*

*=E2=80=9CError! This allocator only handles allocations from 16 through 64=
 bytes=20
in size.=E2=80=9D, __LINE__, __FUNCTION__ );*

      }

      if ( !IsValidAlignment( alignment ) )

      {

            throw *SmartBadAllocException(*

*=E2=80=9CError! This allocator only handles alignments on 4 byte boundarie=
s.=E2=80=9D,=20
__LINE__, __FUNCTION__ );*

      }

      void * place =3D FindPlace( bytes, alignment );

      if ( place =3D=3D nullptr )

      {

            throw SmartBadAlloc( =E2=80=9CError! Unable to allocate bytes.=
=E2=80=9D,

                  __LINE__, __FUNCTION__ );

      }

      return place;

}

=20
IV. Impact on the Standard=20

=20

=C2=B7         Implementing this proposal will have minimal impact on the C=
++=20
Standard.

=C2=B7         It is a pure extension that does not break any existing code=
..

=C2=B7         It does not require additional changes to any library or the=
=20
existing language.

=20
V.    Design Decisions=20


This proposal brings up various questions.


1.      Should the bad_alloc exception be used only allocators fail from=20
lack of memory?

2.      Can it also be used for allocations that fail because of invalid=20
parameters (e.g. wrong size or alignment)?

3.      Can it also be used for allocations that fail because of internal=
=20
problems with the allocator?


One answer to the first and second questions is that allocators should=20
throw an out_of_range or invalid_argument exception when the size or=20
alignment parameter is invalid. Likewise, one could say allocators should=
=20
throw logic_error or runtime_error for internal problems. These answers=20
imply bad_alloc is reserved strictly for out of memory conditions, but not=
=20
for other conditions that arise during allocations.


However, many programmers write code assuming that allocators only throw=20
bad_alloc. They do not expect to catch logic_error or invalid_argument=20
exceptions, so these exceptions will propagate past the functions that=20
should have caught them. For that reason, I recommend using bad_alloc for=
=20
any problems that arise during allocations.

=20
VI. Acknowledgements=20


Many thanks to the following people who reviewed various drafts of this=20
proposal and provided feedback.


1.      Herb Sutter

2.      Andrei Alexandrescu

=20
VII.                       References=20

=20

1.      http://en.cppreference.com/w/cpp/memory/new/bad_alloc

2.      http://en.cppreference.com/w/cpp/error/logic_error

3.      http://en.cppreference.com/w/cpp/memory/new/operator_new

4.      http://en.cppreference.com/w/cpp/memory/new/operator_delete

5.      http://en.cppreference.com/w/cpp/memory/new/set_new_handler

--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/d9001051-0946-4dcf-bf78-8bcdb8302989%40isocpp.or=
g.

------=_Part_2953_1219705336.1504294124651
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi,<br><br>I wrote this proposal after discovering <a href=
=3D"http://en.cppreference.com/w/cpp/memory/new/bad_alloc">the std::bad_all=
oc exception class</a> only has a default constructor. Other exception clas=
ses have constructors with a string parameter. The lack of a similar constr=
uctor in bad_alloc has caused problems for me.<br><br>This is the second dr=
aft of this proposal. Please provide feedback on how to improve it before I=
 submit it.<br><br>I would especially prefer feedback on wording and style =
so that it conforms with the wording and style of accepted proposals. I wou=
ld also like feedback on technical correctness.<br><br>If anybody has insig=
hts on upcoming changes to the standard exception classes that might affect=
 this proposal, please let me know.<br><br>If you prefer a Word document ve=
rsion of this proposal, please let me know.<br><br>Thanks,<br><br>Rich Spos=
ato<br><br>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br><br><!--[if =
gte mso 9]><xml>
 <o:OfficeDocumentSettings>
  <o:RelyOnVML/>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]-->

<p class=3D"MsoTitle" style=3D"text-align:center" align=3D"center"><span st=
yle=3D"mso-fareast-font-family:&quot;Times New Roman&quot;">The bad_alloc C=
onstructor
Parameter Proposal</span></p>

<p class=3D"MsoNormal" style=3D"text-align:center" align=3D"center">=C2=A0<=
/p>

<p class=3D"MsoNormal" style=3D"text-align:center" align=3D"center">By Rich=
ard Sposato</p>

<p class=3D"MsoNormal" style=3D"text-align:center" align=3D"center">Septemb=
er 2017</p>


 <p class=3D"MsoTocHeading">Contents<span style=3D"font-size:11.0pt;
 line-height:107%;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-=
latin;
 mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-han=
si-font-family:
 Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:&quot;Times =
New Roman&quot;;
 mso-bidi-theme-font:minor-bidi;color:windowtext"></span></p>
 <p class=3D"MsoToc1"><a href=3D"#_Toc492030627"><span style=3D"mso-fareast=
-font-family:&quot;Times New Roman&quot;;mso-no-proof:yes">I.</span><span s=
tyle=3D"mso-fareast-font-family:&quot;Times New Roman&quot;;mso-fareast-the=
me-font:minor-fareast;
 color:windowtext;mso-no-proof:yes;text-decoration:none;text-underline:none=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </sp=
an></span><span style=3D"mso-no-proof:yes">Introduction</span><span style=
=3D"color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
 text-decoration:none;text-underline:none"><span style=3D"mso-tab-count:1 d=
otted">. </span></span><span style=3D"color:windowtext;display:none;mso-hid=
e:screen;mso-no-proof:yes;
 text-decoration:none;text-underline:none">1</span></a><span style=3D"mso-f=
areast-font-family:&quot;Times New Roman&quot;;mso-fareast-theme-font:minor=
-fareast;
 mso-no-proof:yes"></span></p>
 <p class=3D"MsoToc1"><a href=3D"#_Toc492030628"><span style=3D"mso-fareast=
-font-family:
 &quot;Times New Roman&quot;;mso-no-proof:yes">II.</span><span style=3D"mso=
-fareast-font-family:
 &quot;Times New Roman&quot;;mso-fareast-theme-font:minor-fareast;color:win=
dowtext;
 mso-no-proof:yes;text-decoration:none;text-underline:none"><span style=3D"=
mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span></span><span style=
=3D"mso-fareast-font-family:
 &quot;Times New Roman&quot;;mso-no-proof:yes">Technical Specifications</sp=
an><span style=3D"color:windowtext;display:none;mso-hide:screen;mso-no-proo=
f:yes;
 text-decoration:none;text-underline:none"><span style=3D"mso-tab-count:1 d=
otted">. </span></span><span style=3D"color:windowtext;display:none;mso-hid=
e:screen;mso-no-proof:yes;
 text-decoration:none;text-underline:none">1</span></a><span style=3D"mso-f=
areast-font-family:&quot;Times New Roman&quot;;mso-fareast-theme-font:minor=
-fareast;
 mso-no-proof:yes"></span></p>
 <p class=3D"MsoToc1"><a href=3D"#_Toc492030629"><span style=3D"mso-fareast=
-font-family:
 &quot;Times New Roman&quot;;mso-no-proof:yes">III.</span><span style=3D"ms=
o-fareast-font-family:
 &quot;Times New Roman&quot;;mso-fareast-theme-font:minor-fareast;color:win=
dowtext;
 mso-no-proof:yes;text-decoration:none;text-underline:none"><span style=3D"=
mso-tab-count:1">=C2=A0=C2=A0=C2=A0 </span></span><span style=3D"mso-fareas=
t-font-family:
 &quot;Times New Roman&quot;;mso-no-proof:yes">Motivation</span><span style=
=3D"color:windowtext;
 display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-un=
derline:
 none"><span style=3D"mso-tab-count:1 dotted">. </span></span><span style=
=3D"color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
 text-decoration:none;text-underline:none">2</span></a><span style=3D"mso-f=
areast-font-family:&quot;Times New Roman&quot;;mso-fareast-theme-font:minor=
-fareast;
 mso-no-proof:yes"></span></p>
 <p class=3D"MsoToc1"><a href=3D"#_Toc492030630"><span style=3D"mso-fareast=
-font-family:
 &quot;Times New Roman&quot;;mso-no-proof:yes">IV.</span><span style=3D"mso=
-fareast-font-family:
 &quot;Times New Roman&quot;;mso-fareast-theme-font:minor-fareast;color:win=
dowtext;
 mso-no-proof:yes;text-decoration:none;text-underline:none"><span style=3D"=
mso-tab-count:1">=C2=A0=C2=A0=C2=A0 </span></span><span style=3D"mso-fareas=
t-font-family:
 &quot;Times New Roman&quot;;mso-no-proof:yes">Impact on the Standard</span=
><span style=3D"color:windowtext;display:none;mso-hide:screen;mso-no-proof:=
yes;
 text-decoration:none;text-underline:none"><span style=3D"mso-tab-count:1 d=
otted">. </span></span><span style=3D"color:windowtext;display:none;mso-hid=
e:screen;mso-no-proof:yes;
 text-decoration:none;text-underline:none">5</span></a><span style=3D"mso-f=
areast-font-family:&quot;Times New Roman&quot;;mso-fareast-theme-font:minor=
-fareast;
 mso-no-proof:yes"></span></p>
 <p class=3D"MsoToc1"><a href=3D"#_Toc492030631"><span style=3D"mso-fareast=
-font-family:
 &quot;Times New Roman&quot;;mso-no-proof:yes">V.</span><span style=3D"mso-=
fareast-font-family:
 &quot;Times New Roman&quot;;mso-fareast-theme-font:minor-fareast;color:win=
dowtext;
 mso-no-proof:yes;text-decoration:none;text-underline:none"><span style=3D"=
mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0 </span></span><span style=3D"mso-=
fareast-font-family:
 &quot;Times New Roman&quot;;mso-no-proof:yes">Design Decisions</span><span=
 style=3D"color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
 text-decoration:none;text-underline:none"><span style=3D"mso-tab-count:1 d=
otted">. </span></span><span style=3D"color:windowtext;display:none;mso-hid=
e:screen;mso-no-proof:yes;
 text-decoration:none;text-underline:none">5</span></a><span style=3D"mso-f=
areast-font-family:&quot;Times New Roman&quot;;mso-fareast-theme-font:minor=
-fareast;
 mso-no-proof:yes"></span></p>
 <p class=3D"MsoToc1"><a href=3D"#_Toc492030632"><span style=3D"mso-fareast=
-font-family:
 &quot;Times New Roman&quot;;mso-no-proof:yes">VI.</span><span style=3D"mso=
-fareast-font-family:
 &quot;Times New Roman&quot;;mso-fareast-theme-font:minor-fareast;color:win=
dowtext;
 mso-no-proof:yes;text-decoration:none;text-underline:none"><span style=3D"=
mso-tab-count:1">=C2=A0=C2=A0=C2=A0 </span></span><span style=3D"mso-fareas=
t-font-family:
 &quot;Times New Roman&quot;;mso-no-proof:yes">Acknowledgements</span><span=
 style=3D"color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
 text-decoration:none;text-underline:none"><span style=3D"mso-tab-count:1 d=
otted">. </span></span><span style=3D"color:windowtext;display:none;mso-hid=
e:screen;mso-no-proof:yes;
 text-decoration:none;text-underline:none">5</span></a><span style=3D"mso-f=
areast-font-family:&quot;Times New Roman&quot;;mso-fareast-theme-font:minor=
-fareast;
 mso-no-proof:yes"></span></p>
 <p class=3D"MsoToc1"><a href=3D"#_Toc492030633"><span style=3D"mso-fareast=
-font-family:
 &quot;Times New Roman&quot;;mso-no-proof:yes">VII.</span><span style=3D"ms=
o-fareast-font-family:
 &quot;Times New Roman&quot;;mso-fareast-theme-font:minor-fareast;color:win=
dowtext;
 mso-no-proof:yes;text-decoration:none;text-underline:none"><span style=3D"=
mso-tab-count:1">=C2=A0=C2=A0 </span></span><span style=3D"mso-fareast-font=
-family:
 &quot;Times New Roman&quot;;mso-no-proof:yes">References</span><span style=
=3D"color:windowtext;
 display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-un=
derline:
 none"><span style=3D"mso-tab-count:1 dotted">. </span></span><span style=
=3D"color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
 text-decoration:none;text-underline:none">5</span></a><span style=3D"mso-f=
areast-font-family:&quot;Times New Roman&quot;;mso-fareast-theme-font:minor=
-fareast;
 mso-no-proof:yes"></span></p>
 <p class=3D"MsoNormal">=C2=A0</p>


<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><b><span style=3D"font-size:12.0pt;font-family:&quot;Ti=
mes New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">=C2=A0</span></b></p>

<h1 style=3D"mso-list:l1 level1 lfo5"><a name=3D"_Toc492030627"><span style=
=3D"mso-fareast-font-family:&quot;Calibri Light&quot;;mso-fareast-theme-fon=
t:major-latin;
mso-bidi-font-family:&quot;Calibri Light&quot;;mso-bidi-theme-font:major-la=
tin"><span style=3D"mso-list:Ignore">I.<span style=3D"font:7.0pt &quot;Time=
s New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span>Introduction</a><span style=3D"mso-bookmark:_Toc492030=
627"></span><span style=3D"mso-fareast-font-family:&quot;Times New Roman&qu=
ot;"></span></h1>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-style:ita=
lic"><br></span></p><p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto=
;mso-margin-bottom-alt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-style:ita=
lic">A
proposal to add two constructors to the std::bad_alloc class so it conforms=
 to
other exception classes.</span></p><p class=3D"MsoNormal" style=3D"mso-marg=
in-top-alt:auto;mso-margin-bottom-alt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-style:ita=
lic"><br></span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><b style=3D"mso-bidi-font-weight:normal"><span style=3D=
"font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fareast=
-font-family:
&quot;Times New Roman&quot;">Intended Audience:</span></b></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">These changes are inte=
nded for C++
programmers of intermediate through expert skill level who are either autho=
rs
or users of memory allocation libraries.</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-style:ita=
lic">=C2=A0</span></p>

<h1 style=3D"mso-list:l1 level1 lfo5"><a name=3D"_Toc492030628"><span style=
=3D"mso-fareast-font-family:&quot;Calibri Light&quot;;mso-fareast-theme-fon=
t:major-latin;
mso-bidi-font-family:&quot;Calibri Light&quot;;mso-bidi-theme-font:major-la=
tin"><span style=3D"mso-list:Ignore">II.<span style=3D"font:7.0pt &quot;Tim=
es New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"mso-fareast-font-family:&quot;Times New=
 Roman&quot;">Technical
Specifications</span></a><span style=3D"mso-fareast-font-family:&quot;Times=
 New Roman&quot;"></span></h1>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-style:ita=
lic">The
current implementation of bad_alloc class supports only the default
constructor. To avoid breaking existing code, this constructor will continu=
e to
exist, and will provide an implementation defined explanatory string for th=
e
what() function.</span></p><p class=3D"MsoNormal" style=3D"mso-margin-top-a=
lt:auto;mso-margin-bottom-alt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-style:ita=
lic"><br></span></p>

<p class=3D"MsoNormal" style=3D"text-indent:.5in"><span style=3D"font-size:=
10.0pt;
mso-bidi-font-size:11.0pt;line-height:107%;font-family:&quot;Courier New&qu=
ot;">bad_alloc();</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-style:ita=
lic"><br></span></p><p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto=
;mso-margin-bottom-alt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-style:ita=
lic">The two
additional constructors will accept either a reference to const std::string=
 or
a pointer to a C-style string. These constructors will look identical to
constructors in other exception classes.</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;tex=
t-indent:
..5in;line-height:normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size=
:12.0pt;
font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New=
 Roman&quot;;mso-bidi-font-style:
italic">explicit bad_alloc( const std::string &amp; what_arg );</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;tex=
t-indent:
..5in;line-height:normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size=
:12.0pt;
font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New=
 Roman&quot;;mso-bidi-font-style:
italic">explicit bad_alloc( const char * what_arg );</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-style:ita=
lic"><br></span></p><p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto=
;mso-margin-bottom-alt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-style:ita=
lic">An
alternate constructor would use a string_view parameter instead of either o=
f
the two above constructors.</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;tex=
t-indent:
..5in;line-height:normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size=
:12.0pt;
font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New=
 Roman&quot;;mso-bidi-font-style:
italic">explicit bad_alloc( std::string_view what_arg );</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-style:ita=
lic">=C2=A0</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-style:ita=
lic">Each will
construct a bad_alloc exception object that stores what_arg as an explanato=
ry
string that can be accessed through the what() function.</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">=C2=A0</span></p>

<h1 style=3D"mso-list:l1 level1 lfo5"><a name=3D"_Toc492030629"><span style=
=3D"mso-fareast-font-family:&quot;Calibri Light&quot;;mso-fareast-theme-fon=
t:major-latin;
mso-bidi-font-family:&quot;Calibri Light&quot;;mso-bidi-theme-font:major-la=
tin"><span style=3D"mso-list:Ignore">III.<span style=3D"font:7.0pt &quot;Ti=
mes New Roman&quot;">=C2=A0 </span></span></span><span style=3D"mso-fareast=
-font-family:&quot;Times New Roman&quot;">Motivation</span></a><span style=
=3D"mso-fareast-font-family:&quot;Times New Roman&quot;"></span></h1>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p><p clas=
s=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto=
;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">There are several moti=
vations for
this proposal. Each of these will be described in detail.</span></p>

<p class=3D"MsoListParagraphCxSpFirst" style=3D"mso-margin-top-alt:auto;mso=
-margin-bottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l0 l=
evel1 lfo4"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Rom=
an&quot;,serif;mso-fareast-font-family:
&quot;Times New Roman&quot;"><span style=3D"mso-list:Ignore">1.<span style=
=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Conformance to existin=
g exception
classes.</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"mso-margin-top-alt:auto;ms=
o-margin-bottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l0 l=
evel1 lfo4"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Rom=
an&quot;,serif;mso-fareast-font-family:
&quot;Times New Roman&quot;"><span style=3D"mso-list:Ignore">2.<span style=
=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Ease of making templat=
es that
construct exceptions.</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"mso-margin-top-alt:auto;ms=
o-margin-bottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l0 l=
evel1 lfo4"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Rom=
an&quot;,serif;mso-fareast-font-family:
&quot;Times New Roman&quot;"><span style=3D"mso-list:Ignore">3.<span style=
=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Ease of deriving subcl=
asses from
exception classes.</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"mso-margin-top-alt:auto;ms=
o-margin-bottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l0 l=
evel1 lfo4"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Rom=
an&quot;,serif;mso-fareast-font-family:
&quot;Times New Roman&quot;"><span style=3D"mso-list:Ignore">4.<span style=
=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Changes to C++17 new a=
nd delete
operators.</span></p>

<p class=3D"MsoListParagraphCxSpLast" style=3D"mso-margin-top-alt:auto;mso-=
margin-bottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l0 l=
evel1 lfo4"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Rom=
an&quot;,serif;mso-fareast-font-family:
&quot;Times New Roman&quot;"><span style=3D"mso-list:Ignore">5.<span style=
=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Allowing allocators to=
 inform
callers exactly why allocations failed.</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">=C2=A0</span></p>

<p class=3D"MsoListParagraph" style=3D"mso-margin-top-alt:auto;mso-margin-b=
ottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l6 l=
evel1 lfo7"><b style=3D"mso-bidi-font-weight:normal"><span style=3D"font-si=
ze:12.0pt;font-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;"><span style=3D"mso-list:Ignore">1.<span style=3D"font:7.0pt &qu=
ot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span></b><b style=3D"mso-bidi-font-weight:normal"><span sty=
le=3D"font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fa=
reast-font-family:
&quot;Times New Roman&quot;">Conformance to existing exception classes.</sp=
an></b></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p><p clas=
s=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto=
;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">All other exception cl=
asses in the std
namespace provide constructors that accept either a single parameter of eit=
her
a reference to a const std::string or a pointer to a C-style string. The
parameter provides a human-readable explanation for why the program threw a=
n
exception or actionable information allowing the calling code to correct th=
e
problem.</span></p>

<p class=3D"MsoListParagraphCxSpFirst" style=3D"margin-bottom:0in;margin-bo=
ttom:.0001pt;
mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l7 level1=
 lfo3"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-famil=
y:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol"><span style=3D"=
mso-list:Ignore">=C2=B7<span style=3D"font:7.0pt &quot;Times New Roman&quot=
;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Ti=
mes New Roman&quot;">logic_error</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"margin-bottom:0in;margin-b=
ottom:
..0001pt;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l=
7 level1 lfo3"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;fo=
nt-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol"><span style=3D"=
mso-list:Ignore">=C2=B7<span style=3D"font:7.0pt &quot;Times New Roman&quot=
;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Ti=
mes New Roman&quot;">invalid_argument</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"margin-bottom:0in;margin-b=
ottom:
..0001pt;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l=
7 level1 lfo3"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;fo=
nt-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol"><span style=3D"=
mso-list:Ignore">=C2=B7<span style=3D"font:7.0pt &quot;Times New Roman&quot=
;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Ti=
mes New Roman&quot;">domain_error</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"margin-bottom:0in;margin-b=
ottom:
..0001pt;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l=
7 level1 lfo3"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;fo=
nt-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol"><span style=3D"=
mso-list:Ignore">=C2=B7<span style=3D"font:7.0pt &quot;Times New Roman&quot=
;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Ti=
mes New Roman&quot;">length_error</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"margin-bottom:0in;margin-b=
ottom:
..0001pt;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l=
7 level1 lfo3"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;fo=
nt-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol"><span style=3D"=
mso-list:Ignore">=C2=B7<span style=3D"font:7.0pt &quot;Times New Roman&quot=
;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Ti=
mes New Roman&quot;">out_of_range</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"margin-bottom:0in;margin-b=
ottom:
..0001pt;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l=
7 level1 lfo3"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;fo=
nt-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol"><span style=3D"=
mso-list:Ignore">=C2=B7<span style=3D"font:7.0pt &quot;Times New Roman&quot=
;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Ti=
mes New Roman&quot;">runtime_error</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"margin-bottom:0in;margin-b=
ottom:
..0001pt;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l=
7 level1 lfo3"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;fo=
nt-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol"><span style=3D"=
mso-list:Ignore">=C2=B7<span style=3D"font:7.0pt &quot;Times New Roman&quot=
;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Ti=
mes New Roman&quot;">range_error</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"margin-bottom:0in;margin-b=
ottom:
..0001pt;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l=
7 level1 lfo3"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;fo=
nt-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol"><span style=3D"=
mso-list:Ignore">=C2=B7<span style=3D"font:7.0pt &quot;Times New Roman&quot=
;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Ti=
mes New Roman&quot;">overflow_error</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"margin-bottom:0in;margin-b=
ottom:
..0001pt;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l=
7 level1 lfo3"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;fo=
nt-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol"><span style=3D"=
mso-list:Ignore">=C2=B7<span style=3D"font:7.0pt &quot;Times New Roman&quot=
;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Ti=
mes New Roman&quot;">underflow_error</span></p>

<p class=3D"MsoListParagraphCxSpLast" style=3D"margin-bottom:0in;margin-bot=
tom:.0001pt;
mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l7 level1=
 lfo3"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-famil=
y:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol"><span style=3D"=
mso-list:Ignore">=C2=B7<span style=3D"font:7.0pt &quot;Times New Roman&quot=
;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Ti=
mes New Roman&quot;">tx_exception</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p><p clas=
s=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto=
;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Conformance to other e=
xception
classes will enable motivations two and three for this proposal.</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">=C2=A0</span></p>

<p class=3D"MsoListParagraphCxSpFirst" style=3D"mso-margin-top-alt:auto;mso=
-margin-bottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l6 l=
evel1 lfo7"><b style=3D"mso-bidi-font-weight:normal"><span style=3D"font-si=
ze:12.0pt;font-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;"><span style=3D"mso-list:Ignore">2.<span style=3D"font:7.0pt &qu=
ot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span></b><b style=3D"mso-bidi-font-weight:normal"><span sty=
le=3D"font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fa=
reast-font-family:
&quot;Times New Roman&quot;">Ease of making templates that construct except=
ions.</span></b></p>

<p class=3D"MsoListParagraphCxSpLast" style=3D"mso-margin-top-alt:auto;mso-=
margin-bottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l6 l=
evel1 lfo7"><b style=3D"mso-bidi-font-weight:normal"><span style=3D"font-si=
ze:12.0pt;font-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;"><span style=3D"mso-list:Ignore">3.<span style=3D"font:7.0pt &qu=
ot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span></b><b style=3D"mso-bidi-font-weight:normal"><span sty=
le=3D"font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fa=
reast-font-family:
&quot;Times New Roman&quot;">Ease of deriving subclasses from exception cla=
sses.</span></b></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p><p clas=
s=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto=
;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Motivations #2 and #3 =
are related.
They can be explained with a single example that uses both templates and
inheritance to show why bad_alloc constructors should accept an explanatory
string parameter.</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p><p clas=
s=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto=
;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Classes that derive fr=
om the
standard exceptions cannot call the bad_alloc constructor using the same co=
de
they would to call other exception classes. This example illustrates how to=
 wrap
existing exception classes with a smart-exception class that derives from
standard exceptions.</span></p><p class=3D"MsoNormal" style=3D"mso-margin-t=
op-alt:auto;mso-margin-bottom-alt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">template &lt; class
ExceptionType &gt;</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">class SmartException</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">{</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">public:</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>Sma=
rtException( const char * message,</span></p>

<p class=3D"MsoNormal" style=3D"margin-top:0in;margin-right:0in;margin-bott=
om:0in;
margin-left:.5in;margin-bottom:.0001pt;text-indent:.5in;line-height:normal"=
><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:&quo=
t;Courier New&quot;;
mso-fareast-font-family:&quot;Times New Roman&quot;">unsigned int line, con=
st char *
function ) :</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:2">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span><b style=3D"mso-bidi-font-weight:normal"=
><span style=3D"color:red">ExceptionType( message ),</span></b></span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:2">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>line_( line ),</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:2">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>functionName_( function )</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>{}<=
/span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>// =
.... rest of class ...</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">private:</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>uns=
igned int line_;</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>con=
st char * functionName_;</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">};</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p><p clas=
s=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto=
;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">The SmartException con=
structor will
call a subclass constructor that accepts a string parameter. This works for
most exceptions, but not bad_alloc.</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p><p clas=
s=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto=
;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">These lines define var=
ious smart
exceptions using the above class and typedefs.</span></p><p class=3D"MsoNor=
mal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"mso-bidi-font-size:12.0pt;font-family:&quot;Courier =
New&quot;;
mso-fareast-font-family:&quot;Times New Roman&quot;">typedef SmartException=
&lt; std::bad_alloc
&gt; SmartBadAllocException;</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"mso-bidi-font-size:12.0pt;font-family:&quot;Courier =
New&quot;;
mso-fareast-font-family:&quot;Times New Roman&quot;">typedef SmartException=
&lt;
std::logic_error &gt; SmartLogicErrorException;</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p><p clas=
s=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto=
;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">This function shows ho=
w code would
throw a smart exception so any code catching the exception can report exact=
ly
where the problem occurred.</span></p><p class=3D"MsoNormal" style=3D"mso-m=
argin-top-alt:auto;mso-margin-bottom-alt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">void * Allocator::Allocate(
std::size_t bytes, std::size_t alignment )</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">{</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>voi=
d * place =3D FindPlace( bytes, alignment
);</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>if =
( place =3D=3D nullptr )</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>{</=
span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:2">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span><b style=3D"mso-bidi-font-weight:normal"=
><span style=3D"color:red">throw SmartBadAllocException( =E2=80=9CError! Un=
able to allocate
bytes.=E2=80=9D,</span></b></span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><b style=3D"mso-bidi-font-weight:normal"><span style=3D"font-size:1=
0.0pt;
mso-bidi-font-size:12.0pt;font-family:&quot;Courier New&quot;;mso-fareast-f=
ont-family:
&quot;Times New Roman&quot;;color:red"><span style=3D"mso-tab-count:3">=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 </span>__LINE__,
__FUNCTION__ );</span></b></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>}</=
span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>ret=
urn place;</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">}</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">=C2=A0</span></p>

<p class=3D"MsoListParagraph" style=3D"mso-margin-top-alt:auto;mso-margin-b=
ottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l6 l=
evel1 lfo7"><b style=3D"mso-bidi-font-weight:normal"><span style=3D"font-si=
ze:12.0pt;font-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;"><span style=3D"mso-list:Ignore">4.<span style=3D"font:7.0pt &qu=
ot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span></b><b style=3D"mso-bidi-font-weight:normal"><span sty=
le=3D"font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fa=
reast-font-family:
&quot;Times New Roman&quot;">Changes to C++17 new and delete operators.</sp=
an></b></p>

<p class=3D"MsoNormal"><span style=3D"font-size:12.0pt;line-height:107%;fon=
t-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;"><br></span></p><p class=3D"MsoNormal"><span style=3D"font-size:=
12.0pt;line-height:107%;font-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;">There are
several additional new and delete operators in the C++17 standard. The
additional operators all have a std::align_val_t parameter to support
alignment-aware allocators. The std::align_val_t parameter will become part=
 of
class-specific new and delete operators along with the global operators.</s=
pan></p><p class=3D"MsoNormal"><span style=3D"font-size:12.0pt;line-height:=
107%;font-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;"><br></span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt"><s=
pan style=3D"font-size:10.0pt;mso-bidi-font-size:11.0pt;line-height:107%;fo=
nt-family:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">void * operator new(
std::size_t count, std::align_val_t al);</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt"><s=
pan style=3D"font-size:10.0pt;mso-bidi-font-size:11.0pt;line-height:107%;fo=
nt-family:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">void * operator new[](
std::size_t count, std::align_val_t al);</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">void operator delete( void
* ptr, std::size_t sz, std::align_val_t al );</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">void operator
delete[]( void * ptr, std::size_t sz, std::align_val_t al );</span></p>

<p class=3D"MsoNormal"><span style=3D"font-size:12.0pt;line-height:107%;fon=
t-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;">=C2=A0</span></p>

<p class=3D"MsoNormal"><span style=3D"font-size:12.0pt;line-height:107%;fon=
t-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;">Alignment-aware
allocators would be unable to allocate the required number of bytes if the
alignment is incorrect. (e.g. =E2=80=93 The caller requests alignment on 16=
 byte
boundaries, but the allocator only supports alignment on 4 or 8 byte
boundaries.) If the allocator throws a bad_alloc exception for the invalid
alignment, the caller may assume the program is out of memory instead of
assuming the alignment is incorrect. Such a caller may call a new_handler b=
elieving
it will make more memory available. A new_handler could spend an enormous
amount of time looking for memory that is available only to find none, simp=
ly
throw another bad_alloc exception, or terminate the program by calling
std::abort or std::exit. None of these actions will resolve the simple prob=
lem
of using the correct alignment.</span></p><p class=3D"MsoNormal"><span styl=
e=3D"font-size:12.0pt;line-height:107%;font-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;"><br></span></p>

<p class=3D"MsoNormal"><span style=3D"font-size:12.0pt;line-height:107%;fon=
t-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;">A caller
that is correctly informed the alignment is invalid could merely repeat the
request with a different alignment value. This is a low cost action that
provides the intended result =E2=80=93 allocating a chunk of memory with th=
e correct
alignment.</span></p>

<p class=3D"MsoNormal"><span style=3D"font-size:12.0pt;line-height:107%;fon=
t-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;"><br></span></p><p class=3D"MsoNormal"><span style=3D"font-size:=
12.0pt;line-height:107%;font-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;">This means that
a bad_alloc exception with a valid explanatory string could provide the cal=
ler
with actionable information to solve the problem, while a bad_alloc excepti=
on
with no (or an inaccurate) explanatory string would lead the caller to perf=
orm
an expensive or program-ending action.</span></p>

<p class=3D"MsoNormal"><span style=3D"font-size:12.0pt;line-height:107%;fon=
t-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;"><br></span></p><p class=3D"MsoNormal"><span style=3D"font-size:=
12.0pt;line-height:107%;font-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;">When the
std::align_val_t parameter is added to class-specific new and delete operat=
ors,
users will be able to choose alignments that are not supported by the alloc=
ators
they use. (This proposal assumes the global new and delete operators will
support all alignment values in the std::align_val_t type, and thus it will=
 be
impossible to call a global memory operator with an invalid alignment value=
..)</span></p>

<p class=3D"MsoNormal"><span style=3D"font-size:12.0pt;line-height:107%;fon=
t-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;">=C2=A0</span></p>

<p class=3D"MsoListParagraph" style=3D"mso-margin-top-alt:auto;mso-margin-b=
ottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l6 l=
evel1 lfo7"><b style=3D"mso-bidi-font-weight:normal"><span style=3D"font-si=
ze:12.0pt;font-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;"><span style=3D"mso-list:Ignore">5.<span style=3D"font:7.0pt &qu=
ot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span></b><b style=3D"mso-bidi-font-weight:normal"><span sty=
le=3D"font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif;mso-fa=
reast-font-family:
&quot;Times New Roman&quot;">Allowing allocators to inform callers exactly =
why
allocations failed.</span></b></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p><p clas=
s=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto=
;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Allocations may fail f=
or reasons
other than the program ran out memory. There are specialized allocators tha=
t
only handle requests for specific sizes, such as pool allocators, that coul=
d
throw exceptions if they receive requests for sizes they cannot handle.</sp=
an></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p><p clas=
s=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto=
;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">This example shows how=
 an allocator
might throw a bad_alloc exception with actionable information.</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><br></span></p><p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-b=
ottom:.0001pt;line-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">void * PoolAllocator::Allocate(
std::size_t bytes, std::align_val_t alignment )</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">{</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>if =
( ( bytes &lt; minAllowedSize ) || (
maxAllowedSize &lt; bytes ) )</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>{</=
span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:2">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>throw <b style=3D"mso-bidi-font-weight:
normal"><span style=3D"color:red">SmartBadAllocException(</span></b></span>=
</p>

<p class=3D"MsoNormal" style=3D"margin-top:0in;margin-right:0in;margin-bott=
om:0in;
margin-left:1.0in;margin-bottom:.0001pt;text-indent:.5in;line-height:normal=
"><b style=3D"mso-bidi-font-weight:normal"><span style=3D"font-size:10.0pt;=
mso-bidi-font-size:
12.0pt;font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Ti=
mes New Roman&quot;;
color:red">=E2=80=9CError! This allocator only handles allocations from 16 =
through 64
bytes in size.=E2=80=9D, __LINE__, __FUNCTION__ );</span></b></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>}</=
span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>if =
( !IsValidAlignment( alignment ) )</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>{</=
span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:2">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>throw <b style=3D"mso-bidi-font-weight:
normal"><span style=3D"color:red">SmartBadAllocException(</span></b></span>=
</p>

<p class=3D"MsoNormal" style=3D"margin-top:0in;margin-right:0in;margin-bott=
om:0in;
margin-left:1.0in;margin-bottom:.0001pt;text-indent:.5in;line-height:normal=
"><b style=3D"mso-bidi-font-weight:normal"><span style=3D"font-size:10.0pt;=
mso-bidi-font-size:
12.0pt;font-family:&quot;Courier New&quot;;mso-fareast-font-family:&quot;Ti=
mes New Roman&quot;;
color:red">=E2=80=9CError! This allocator only handles alignments on 4 byte
boundaries.=E2=80=9D, __LINE__, __FUNCTION__ );</span></b></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>}</=
span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>voi=
d * place =3D FindPlace( bytes, alignment
);</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>if =
( place =3D=3D nullptr )</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>{</=
span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:2">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>throw SmartBadAlloc( =E2=80=9CError! Una=
ble
to allocate bytes.=E2=80=9D,</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:3">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>__LI=
NE__, __FUNCTION__ );</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>}</=
span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
"><span style=3D"mso-tab-count:1">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </span>ret=
urn place;</span></p>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:10.0pt;mso-bidi-font-size:12.0pt;font-fami=
ly:
&quot;Courier New&quot;;mso-fareast-font-family:&quot;Times New Roman&quot;=
">}</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">=C2=A0</span></p>

<h1 style=3D"mso-list:l1 level1 lfo5"><a name=3D"_Toc492030630"><span style=
=3D"mso-fareast-font-family:&quot;Calibri Light&quot;;mso-fareast-theme-fon=
t:major-latin;
mso-bidi-font-family:&quot;Calibri Light&quot;;mso-bidi-theme-font:major-la=
tin"><span style=3D"mso-list:Ignore">IV.<span style=3D"font:7.0pt &quot;Tim=
es New Roman&quot;"> </span></span></span><span style=3D"mso-fareast-font-f=
amily:&quot;Times New Roman&quot;">Impact on the Standard</span></a><span s=
tyle=3D"mso-fareast-font-family:&quot;Times New Roman&quot;"></span></h1>

<p class=3D"MsoNormal" style=3D"margin-bottom:0in;margin-bottom:.0001pt;lin=
e-height:
normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Roman&q=
uot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">=C2=A0</span></p>

<p class=3D"MsoListParagraphCxSpFirst" style=3D"margin-bottom:0in;margin-bo=
ttom:.0001pt;
mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l2 level1=
 lfo2"><span style=3D"font-size:12.0pt;font-family:Symbol;mso-fareast-font-=
family:Symbol;
mso-bidi-font-family:Symbol"><span style=3D"mso-list:Ignore">=C2=B7<span st=
yle=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Implementing this prop=
osal will have
minimal impact on the C++ Standard.</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"margin-bottom:0in;margin-b=
ottom:
..0001pt;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l=
2 level1 lfo2"><span style=3D"font-size:12.0pt;font-family:Symbol;mso-farea=
st-font-family:Symbol;
mso-bidi-font-family:Symbol"><span style=3D"mso-list:Ignore">=C2=B7<span st=
yle=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">It is a pure extension=
 that does not
break any existing code.</span></p>

<p class=3D"MsoListParagraphCxSpLast" style=3D"margin-bottom:0in;margin-bot=
tom:.0001pt;
mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l2 level1=
 lfo2"><span style=3D"font-size:12.0pt;font-family:Symbol;mso-fareast-font-=
family:Symbol;
mso-bidi-font-family:Symbol"><span style=3D"mso-list:Ignore">=C2=B7<span st=
yle=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">It does not require ad=
ditional
changes to any library or the existing language.</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">=C2=A0</span></p>

<h1 style=3D"mso-list:l1 level1 lfo5"><a name=3D"_Toc492030631"><span style=
=3D"mso-fareast-font-family:&quot;Calibri Light&quot;;mso-fareast-theme-fon=
t:major-latin;
mso-bidi-font-family:&quot;Calibri Light&quot;;mso-bidi-theme-font:major-la=
tin"><span style=3D"mso-list:Ignore">V.<span style=3D"font:7.0pt &quot;Time=
s New Roman&quot;">=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"mso-fareast-font-family:&quot;Times New=
 Roman&quot;">Design
Decisions</span></a><span style=3D"mso-fareast-font-family:&quot;Times New =
Roman&quot;"></span></h1>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p><p clas=
s=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto=
;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">This proposal brings u=
p various
questions.</span></p><p class=3D"MsoNormal" style=3D"mso-margin-top-alt:aut=
o;mso-margin-bottom-alt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p>

<p class=3D"MsoListParagraphCxSpFirst" style=3D"mso-margin-top-alt:auto;mso=
-margin-bottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l3 l=
evel1 lfo6"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Rom=
an&quot;,serif;mso-fareast-font-family:
&quot;Times New Roman&quot;"><span style=3D"mso-list:Ignore">1.<span style=
=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Should the bad_alloc e=
xception be
used only allocators fail from lack of memory?</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"mso-margin-top-alt:auto;ms=
o-margin-bottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l3 l=
evel1 lfo6"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Rom=
an&quot;,serif;mso-fareast-font-family:
&quot;Times New Roman&quot;"><span style=3D"mso-list:Ignore">2.<span style=
=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Can it also be used fo=
r allocations
that fail because of invalid parameters (e.g. wrong size or alignment)?</sp=
an></p>

<p class=3D"MsoListParagraphCxSpLast" style=3D"mso-margin-top-alt:auto;mso-=
margin-bottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l3 l=
evel1 lfo6"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Rom=
an&quot;,serif;mso-fareast-font-family:
&quot;Times New Roman&quot;"><span style=3D"mso-list:Ignore">3.<span style=
=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Can it also be used fo=
r allocations
that fail because of internal problems with the allocator?</span></p><p cla=
ss=3D"MsoListParagraphCxSpLast" style=3D"mso-margin-top-alt:auto;mso-margin=
-bottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l3 l=
evel1 lfo6"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Rom=
an&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">One answer to the firs=
t and second
questions is that allocators should throw an out_of_range or invalid_argume=
nt exception
when the size or alignment parameter is invalid. Likewise, one could say
allocators should throw logic_error or runtime_error for internal problems.
These answers imply bad_alloc is reserved strictly for out of memory
conditions, but not for other conditions that arise during allocations.</sp=
an></p><p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-b=
ottom-alt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">However, many programm=
ers write code
assuming that allocators only throw bad_alloc. They do not expect to catch =
logic_error
or invalid_argument exceptions, so these exceptions will propagate past the
functions that should have caught them. For that reason, I recommend using
bad_alloc for any problems that arise during allocations.</span></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-style:ita=
lic">=C2=A0</span></p>

<h1 style=3D"mso-list:l1 level1 lfo5"><a name=3D"_Toc492030632"><span style=
=3D"mso-fareast-font-family:&quot;Calibri Light&quot;;mso-fareast-theme-fon=
t:major-latin;
mso-bidi-font-family:&quot;Calibri Light&quot;;mso-bidi-theme-font:major-la=
tin"><span style=3D"mso-list:Ignore">VI.<span style=3D"font:7.0pt &quot;Tim=
es New Roman&quot;"> </span></span></span><span style=3D"mso-fareast-font-f=
amily:&quot;Times New Roman&quot;">Acknowledgements</span></a><span style=
=3D"mso-fareast-font-family:&quot;Times New Roman&quot;"></span></h1>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p><p clas=
s=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-alt:auto=
;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Many thanks to the fol=
lowing people
who reviewed various drafts of this proposal and provided feedback.</span><=
/p><p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-botto=
m-alt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><br></span></p>

<p class=3D"MsoListParagraphCxSpFirst" style=3D"mso-margin-top-alt:auto;mso=
-margin-bottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l4 l=
evel1 lfo8"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Rom=
an&quot;,serif;mso-fareast-font-family:
&quot;Times New Roman&quot;"><span style=3D"mso-list:Ignore">1.<span style=
=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Herb Sutter</span></p>

<p class=3D"MsoListParagraphCxSpLast" style=3D"mso-margin-top-alt:auto;mso-=
margin-bottom-alt:
auto;mso-add-space:auto;text-indent:-.25in;line-height:normal;mso-list:l4 l=
evel1 lfo8"><span style=3D"font-size:12.0pt;font-family:&quot;Times New Rom=
an&quot;,serif;mso-fareast-font-family:
&quot;Times New Roman&quot;"><span style=3D"mso-list:Ignore">2.<span style=
=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
</span></span></span><span style=3D"font-size:12.0pt;font-family:&quot;Time=
s New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">Andrei Alexandrescu</s=
pan></p>

<p class=3D"MsoNormal" style=3D"mso-margin-top-alt:auto;mso-margin-bottom-a=
lt:auto;
line-height:normal"><span style=3D"font-size:12.0pt;font-family:&quot;Times=
 New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">=C2=A0</span></p>

<h1 style=3D"mso-list:l1 level1 lfo5"><a name=3D"_Toc492030633"><span style=
=3D"mso-fareast-font-family:&quot;Calibri Light&quot;;mso-fareast-theme-fon=
t:major-latin;
mso-bidi-font-family:&quot;Calibri Light&quot;;mso-bidi-theme-font:major-la=
tin"><span style=3D"mso-list:Ignore">VII.<span style=3D"font:7.0pt &quot;Ti=
mes New Roman&quot;">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0
</span></span></span><span style=3D"mso-fareast-font-family:&quot;Times New=
 Roman&quot;">References</span></a><span style=3D"mso-fareast-font-family:&=
quot;Times New Roman&quot;"></span></h1>

<p class=3D"MsoListParagraphCxSpFirst"><span style=3D"font-size:12.0pt;line=
-height:
107%;font-family:&quot;Times New Roman&quot;,serif;mso-fareast-font-family:=
&quot;Times New Roman&quot;">=C2=A0</span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"margin-left:.75in;mso-add-=
space:
auto;text-indent:-.25in;mso-list:l5 level1 lfo1"><span style=3D"font-size:1=
2.0pt;line-height:107%;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><span style=3D"mso-lis=
t:Ignore">1.<span style=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 </span></span></span><a href=3D"http://en.cpprefer=
ence.com/w/cpp/memory/new/bad_alloc"><span style=3D"font-size:12.0pt;line-h=
eight:107%;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">http://en.cppreference=
..com/w/cpp/memory/new/bad_alloc</span></a><span style=3D"font-size:12.0pt;l=
ine-height:107%;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"></span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"margin-left:.75in;mso-add-=
space:
auto;text-indent:-.25in;mso-list:l5 level1 lfo1"><span style=3D"font-size:1=
2.0pt;line-height:107%;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><span style=3D"mso-lis=
t:Ignore">2.<span style=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 </span></span></span><a href=3D"http://en.cpprefer=
ence.com/w/cpp/error/logic_error"><span style=3D"font-size:12.0pt;line-heig=
ht:107%;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">http://en.cppreference=
..com/w/cpp/error/logic_error</span></a><span style=3D"font-size:12.0pt;line=
-height:107%;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"></span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"margin-left:.75in;mso-add-=
space:
auto;text-indent:-.25in;mso-list:l5 level1 lfo1"><span style=3D"font-size:1=
2.0pt;line-height:107%;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><span style=3D"mso-lis=
t:Ignore">3.<span style=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 </span></span></span><a href=3D"http://en.cpprefer=
ence.com/w/cpp/memory/new/operator_new"><span style=3D"font-size:12.0pt;lin=
e-height:107%;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">http://en.cppreference=
..com/w/cpp/memory/new/operator_new</span></a><span style=3D"font-size:12.0p=
t;line-height:107%;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"></span></p>

<p class=3D"MsoListParagraphCxSpMiddle" style=3D"margin-left:.75in;mso-add-=
space:
auto;text-indent:-.25in;mso-list:l5 level1 lfo1"><span class=3D"MsoHyperlin=
k"><span style=3D"font-size:12.0pt;line-height:107%;font-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;;color:windowtext;
text-decoration:none;text-underline:none"><span style=3D"mso-list:Ignore">4=
..<span style=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 </span></span></span></span><a href=3D"http://en.cppreference.=
com/w/cpp/memory/new/operator_delete"><span style=3D"font-size:12.0pt;line-=
height:107%;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">http://en.cppreference=
..com/w/cpp/memory/new/operator_delete</span></a><span class=3D"MsoHyperlink=
"><span style=3D"font-size:12.0pt;line-height:107%;font-family:
&quot;Times New Roman&quot;,serif;mso-fareast-font-family:&quot;Times New R=
oman&quot;;color:windowtext;
text-decoration:none;text-underline:none"></span></span></p>

<p class=3D"MsoListParagraphCxSpLast" style=3D"margin-left:.75in;mso-add-sp=
ace:auto;
text-indent:-.25in;mso-list:l5 level1 lfo1"><span style=3D"font-size:12.0pt=
;line-height:107%;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"><span style=3D"mso-lis=
t:Ignore">5.<span style=3D"font:7.0pt &quot;Times New Roman&quot;">=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 </span></span></span><a href=3D"http://en.cpprefer=
ence.com/w/cpp/memory/new/set_new_handler"><span style=3D"font-size:12.0pt;=
line-height:107%;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;">http://en.cppreference=
..com/w/cpp/memory/new/set_new_handler</span></a><span style=3D"font-size:12=
..0pt;line-height:107%;font-family:&quot;Times New Roman&quot;,serif;
mso-fareast-font-family:&quot;Times New Roman&quot;"></span></p>

<!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val=3D"Cambria Math"/>
   <m:brkBin m:val=3D"before"/>
   <m:brkBinSub m:val=3D"&#45;-"/>
   <m:smallFrac m:val=3D"off"/>
   <m:dispDef/>
   <m:lMargin m:val=3D"0"/>
   <m:rMargin m:val=3D"0"/>
   <m:defJc m:val=3D"centerGroup"/>
   <m:wrapIndent m:val=3D"1440"/>
   <m:intLim m:val=3D"subSup"/>
   <m:naryLim m:val=3D"undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"false"
  DefSemiHidden=3D"false" DefQFormat=3D"false" DefPriority=3D"99"
  LatentStyleCount=3D"371">
  <w:LsdException Locked=3D"false" Priority=3D"0" QFormat=3D"true" Name=3D"=
Normal"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" Name=3D"=
heading 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" QFormat=3D"true" Name=3D"heading 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" QFormat=3D"true" Name=3D"heading 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" QFormat=3D"true" Name=3D"heading 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" QFormat=3D"true" Name=3D"heading 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" QFormat=3D"true" Name=3D"heading 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" QFormat=3D"true" Name=3D"heading 7"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" QFormat=3D"true" Name=3D"heading 8"/>
  <w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" QFormat=3D"true" Name=3D"heading 9"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"index 1"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"index 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"index 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"index 4"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"index 5"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"index 6"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"index 7"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"index 8"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"index 9"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" Name=3D"toc 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" Name=3D"toc 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" Name=3D"toc 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" Name=3D"toc 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" Name=3D"toc 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" Name=3D"toc 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" Name=3D"toc 7"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" Name=3D"toc 8"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" Name=3D"toc 9"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Normal Indent"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"footnote text"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"annotation text"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"header"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"footer"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"index heading"/>
  <w:LsdException Locked=3D"false" Priority=3D"35" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" QFormat=3D"true" Name=3D"caption"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"table of figures"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"envelope address"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"envelope return"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"footnote reference"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"annotation reference"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"line number"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"page number"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"endnote reference"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"endnote text"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"table of authorities"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"macro"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"toa heading"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Bullet"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Number"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List 4"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List 5"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Bullet 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Bullet 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Bullet 4"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Bullet 5"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Number 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Number 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Number 4"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Number 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"10" QFormat=3D"true" Name=3D=
"Title"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Closing"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Signature"/>
  <w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" Name=3D"Default Paragraph Font"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Body Text"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Body Text Indent"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Continue"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Continue 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Continue 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Continue 4"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"List Continue 5"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Message Header"/>
  <w:LsdException Locked=3D"false" Priority=3D"11" QFormat=3D"true" Name=3D=
"Subtitle"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Salutation"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Date"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Body Text First Indent"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Body Text First Indent 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Note Heading"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Body Text 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Body Text 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Body Text Indent 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Body Text Indent 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Block Text"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Hyperlink"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"FollowedHyperlink"/>
  <w:LsdException Locked=3D"false" Priority=3D"22" QFormat=3D"true" Name=3D=
"Strong"/>
  <w:LsdException Locked=3D"false" Priority=3D"20" QFormat=3D"true" Name=3D=
"Emphasis"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Document Map"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Plain Text"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"E-mail Signature"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"HTML Top of Form"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"HTML Bottom of Form"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Normal (Web)"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"HTML Acronym"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"HTML Address"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"HTML Cite"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"HTML Code"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"HTML Definition"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"HTML Keyboard"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"HTML Preformatted"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"HTML Sample"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"HTML Typewriter"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"HTML Variable"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Normal Table"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"annotation subject"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"No List"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Outline List 1"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Outline List 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Outline List 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Simple 1"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Simple 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Simple 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Classic 1"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Classic 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Classic 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Classic 4"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Colorful 1"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Colorful 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Colorful 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Columns 1"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Columns 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Columns 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Columns 4"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Columns 5"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Grid 1"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Grid 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Grid 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Grid 4"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Grid 5"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Grid 6"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Grid 7"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Grid 8"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table List 1"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table List 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table List 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table List 4"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table List 5"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table List 6"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table List 7"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table List 8"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table 3D effects 1"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table 3D effects 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table 3D effects 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Contemporary"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Elegant"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Professional"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Subtle 1"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Subtle 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Web 1"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Web 2"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Web 3"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Balloon Text"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"Table Grid"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" UnhideWhenUsed=3D"tr=
ue"
   Name=3D"Table Theme"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" Name=3D"Placeholder =
Text"/>
  <w:LsdException Locked=3D"false" Priority=3D"1" QFormat=3D"true" Name=3D"=
No Spacing"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1=
"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2=
"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading=
"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading Ac=
cent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List Accen=
t 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid Accen=
t 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1=
 Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2=
 Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1 Ac=
cent 1"/>
  <w:LsdException Locked=3D"false" SemiHidden=3D"true" Name=3D"Revision"/>
  <w:LsdException Locked=3D"false" Priority=3D"34" QFormat=3D"true"
   Name=3D"List Paragraph"/>
  <w:LsdException Locked=3D"false" Priority=3D"29" QFormat=3D"true" Name=3D=
"Quote"/>
  <w:LsdException Locked=3D"false" Priority=3D"30" QFormat=3D"true"
   Name=3D"Intense Quote"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2 Ac=
cent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1 Ac=
cent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2 Ac=
cent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3 Ac=
cent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List Accent=
 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading=
 Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List Ac=
cent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid Ac=
cent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading Ac=
cent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List Accen=
t 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid Accen=
t 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1=
 Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2=
 Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1 Ac=
cent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2 Ac=
cent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1 Ac=
cent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2 Ac=
cent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3 Ac=
cent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List Accent=
 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading=
 Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List Ac=
cent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid Ac=
cent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading Ac=
cent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List Accen=
t 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid Accen=
t 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1=
 Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2=
 Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1 Ac=
cent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2 Ac=
cent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1 Ac=
cent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2 Ac=
cent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3 Ac=
cent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List Accent=
 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading=
 Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List Ac=
cent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid Ac=
cent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading Ac=
cent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List Accen=
t 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid Accen=
t 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1=
 Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2=
 Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1 Ac=
cent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2 Ac=
cent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1 Ac=
cent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2 Ac=
cent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3 Ac=
cent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List Accent=
 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading=
 Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List Ac=
cent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid Ac=
cent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading Ac=
cent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List Accen=
t 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid Accen=
t 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1=
 Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2=
 Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1 Ac=
cent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2 Ac=
cent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1 Ac=
cent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2 Ac=
cent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3 Ac=
cent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List Accent=
 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading=
 Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List Ac=
cent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid Ac=
cent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"60" Name=3D"Light Shading Ac=
cent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"61" Name=3D"Light List Accen=
t 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"62" Name=3D"Light Grid Accen=
t 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"63" Name=3D"Medium Shading 1=
 Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"64" Name=3D"Medium Shading 2=
 Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"65" Name=3D"Medium List 1 Ac=
cent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"66" Name=3D"Medium List 2 Ac=
cent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"67" Name=3D"Medium Grid 1 Ac=
cent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"68" Name=3D"Medium Grid 2 Ac=
cent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"69" Name=3D"Medium Grid 3 Ac=
cent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"70" Name=3D"Dark List Accent=
 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"71" Name=3D"Colorful Shading=
 Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"72" Name=3D"Colorful List Ac=
cent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"73" Name=3D"Colorful Grid Ac=
cent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"19" QFormat=3D"true"
   Name=3D"Subtle Emphasis"/>
  <w:LsdException Locked=3D"false" Priority=3D"21" QFormat=3D"true"
   Name=3D"Intense Emphasis"/>
  <w:LsdException Locked=3D"false" Priority=3D"31" QFormat=3D"true"
   Name=3D"Subtle Reference"/>
  <w:LsdException Locked=3D"false" Priority=3D"32" QFormat=3D"true"
   Name=3D"Intense Reference"/>
  <w:LsdException Locked=3D"false" Priority=3D"33" QFormat=3D"true" Name=3D=
"Book Title"/>
  <w:LsdException Locked=3D"false" Priority=3D"37" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" Name=3D"Bibliography"/>
  <w:LsdException Locked=3D"false" Priority=3D"39" SemiHidden=3D"true"
   UnhideWhenUsed=3D"true" QFormat=3D"true" Name=3D"TOC Heading"/>
  <w:LsdException Locked=3D"false" Priority=3D"41" Name=3D"Plain Table 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"42" Name=3D"Plain Table 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"43" Name=3D"Plain Table 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"44" Name=3D"Plain Table 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"45" Name=3D"Plain Table 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"40" Name=3D"Grid Table Light=
"/>
  <w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"Grid Table 1 Lig=
ht"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dar=
k"/>
  <w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"Grid Table 6 Col=
orful"/>
  <w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"Grid Table 7 Col=
orful"/>
  <w:LsdException Locked=3D"false" Priority=3D"46"
   Name=3D"Grid Table 1 Light Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2 Acc=
ent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3 Acc=
ent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4 Acc=
ent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dar=
k Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"51"
   Name=3D"Grid Table 6 Colorful Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"52"
   Name=3D"Grid Table 7 Colorful Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"46"
   Name=3D"Grid Table 1 Light Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2 Acc=
ent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3 Acc=
ent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4 Acc=
ent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dar=
k Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"51"
   Name=3D"Grid Table 6 Colorful Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"52"
   Name=3D"Grid Table 7 Colorful Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"46"
   Name=3D"Grid Table 1 Light Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2 Acc=
ent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3 Acc=
ent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4 Acc=
ent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dar=
k Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"51"
   Name=3D"Grid Table 6 Colorful Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"52"
   Name=3D"Grid Table 7 Colorful Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"46"
   Name=3D"Grid Table 1 Light Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2 Acc=
ent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3 Acc=
ent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4 Acc=
ent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dar=
k Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"51"
   Name=3D"Grid Table 6 Colorful Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"52"
   Name=3D"Grid Table 7 Colorful Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"46"
   Name=3D"Grid Table 1 Light Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2 Acc=
ent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3 Acc=
ent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4 Acc=
ent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dar=
k Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"51"
   Name=3D"Grid Table 6 Colorful Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"52"
   Name=3D"Grid Table 7 Colorful Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"46"
   Name=3D"Grid Table 1 Light Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"Grid Table 2 Acc=
ent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"Grid Table 3 Acc=
ent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"Grid Table 4 Acc=
ent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"Grid Table 5 Dar=
k Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"51"
   Name=3D"Grid Table 6 Colorful Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"52"
   Name=3D"Grid Table 7 Colorful Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"46" Name=3D"List Table 1 Lig=
ht"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dar=
k"/>
  <w:LsdException Locked=3D"false" Priority=3D"51" Name=3D"List Table 6 Col=
orful"/>
  <w:LsdException Locked=3D"false" Priority=3D"52" Name=3D"List Table 7 Col=
orful"/>
  <w:LsdException Locked=3D"false" Priority=3D"46"
   Name=3D"List Table 1 Light Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2 Acc=
ent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3 Acc=
ent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4 Acc=
ent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dar=
k Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"51"
   Name=3D"List Table 6 Colorful Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"52"
   Name=3D"List Table 7 Colorful Accent 1"/>
  <w:LsdException Locked=3D"false" Priority=3D"46"
   Name=3D"List Table 1 Light Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2 Acc=
ent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3 Acc=
ent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4 Acc=
ent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dar=
k Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"51"
   Name=3D"List Table 6 Colorful Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"52"
   Name=3D"List Table 7 Colorful Accent 2"/>
  <w:LsdException Locked=3D"false" Priority=3D"46"
   Name=3D"List Table 1 Light Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2 Acc=
ent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3 Acc=
ent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4 Acc=
ent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dar=
k Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"51"
   Name=3D"List Table 6 Colorful Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"52"
   Name=3D"List Table 7 Colorful Accent 3"/>
  <w:LsdException Locked=3D"false" Priority=3D"46"
   Name=3D"List Table 1 Light Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2 Acc=
ent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3 Acc=
ent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4 Acc=
ent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dar=
k Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"51"
   Name=3D"List Table 6 Colorful Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"52"
   Name=3D"List Table 7 Colorful Accent 4"/>
  <w:LsdException Locked=3D"false" Priority=3D"46"
   Name=3D"List Table 1 Light Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2 Acc=
ent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3 Acc=
ent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4 Acc=
ent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dar=
k Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"51"
   Name=3D"List Table 6 Colorful Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"52"
   Name=3D"List Table 7 Colorful Accent 5"/>
  <w:LsdException Locked=3D"false" Priority=3D"46"
   Name=3D"List Table 1 Light Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"47" Name=3D"List Table 2 Acc=
ent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"48" Name=3D"List Table 3 Acc=
ent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"49" Name=3D"List Table 4 Acc=
ent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"50" Name=3D"List Table 5 Dar=
k Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"51"
   Name=3D"List Table 6 Colorful Accent 6"/>
  <w:LsdException Locked=3D"false" Priority=3D"52"
   Name=3D"List Table 7 Colorful Accent 6"/>
 </w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin-top:0in;
	mso-para-margin-right:0in;
	mso-para-margin-bottom:8.0pt;
	mso-para-margin-left:0in;
	line-height:107%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]--></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/d9001051-0946-4dcf-bf78-8bcdb8302989%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/d9001051-0946-4dcf-bf78-8bcdb8302989=
%40isocpp.org</a>.<br />

------=_Part_2953_1219705336.1504294124651--

------=_Part_2952_496205681.1504294124648--

.
