|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r51845 - sandbox/committee/LWG/cd_status
From: bdawes_at_[hidden]
Date: 2009-03-18 17:12:51
Author: bemandawes
Date: 2009-03-18 17:12:49 EDT (Wed, 18 Mar 2009)
New Revision: 51845
URL: http://svn.boost.org/trac/boost/changeset/51845
Log:
Restore UK 98 to original position, get rid of many double newlines
Text files modified:
sandbox/committee/LWG/cd_status/comments.xml | 2150 +++++++++++++++++++--------------------
1 files changed, 1074 insertions(+), 1076 deletions(-)
Modified: sandbox/committee/LWG/cd_status/comments.xml
==============================================================================
--- sandbox/committee/LWG/cd_status/comments.xml (original)
+++ sandbox/committee/LWG/cd_status/comments.xml 2009-03-18 17:12:49 EDT (Wed, 18 Mar 2009)
@@ -5,6 +5,29 @@
docno="PL22.16 09/xxxx = WG21 Nyyyy"
>
+<comment nb="UK" num="98" uknum="402" type="Te" owner="LWG" issue="1055" disp="" date="" extdoc="">
+<section>
+20.5.6
+</section>
+<para></para>
+<description>
+ It would be
+ useful to be able to determine the underlying type of an
+ arbitrary enumeration type. This would allow safe casting
+ to an integral type (especially needed for scoped enums,
+ which do not promote), and would allow use of
+ numeric_limits. In general it makes generic programming
+ with enumerations easier.
+</description>
+<suggestion>
+ Add a TransformationTrait to 20.5.6 that
+ returns the underlying type of an enumeration type.
+</suggestion>
+<notes>Originlly submitted as section: 7.2 ¶ 5</notes>
+<rationale>
+</rationale>
+</comment>
+
<comment nb="FR" num="1" uknum="" type="ge" owner="" issue="" disp="" date="" extdoc="">
<section>
General Comment
@@ -6622,10 +6645,7 @@
</comment>
<comment nb="JP" num="21" uknum="" type="te" owner="LWG" issue="" disp="rejected" date="" extdoc="">
-<section>
- 17
- Library
- 21.2, 21.4,
+<section>21.2, 21.4,
27.2, 27.6,
27.7,
27.8.1,
@@ -6645,568 +6665,569 @@
<suggestion>
Add commented
lines corresponding to char16_t, char32_t.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
21.2 paragraph1
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
...
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
// 21.4: numeric conversions
- <BR/><BR/>
+ <BR/>
...
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
int stoi(const u16string& str, size_t *idx = 0,
int base = 10);
- <BR/><BR/>
+ <BR/>
long stol(const u16string& str, size_t *idx = 0,
int base = 10);
- <BR/><BR/>
+ <BR/>
unsigned long stoul(const u16string& str, size_t
*idx = 0, int base = 10);
- <BR/><BR/>
+ <BR/>
long long stoll(const u16string& str, size_t *idx
= 0, int base = 10);
- <BR/><BR/>
+ <BR/>
unsigned long long stoull(const u16string& str,
size_t *idx = 0, int base = 10);
- <BR/><BR/>
+ <BR/>
float stof(const u16string& str, size_t *idx =
0);
- <BR/><BR/>
+ <BR/>
double stod(const u16string& str, size_t *idx =
0);
- <BR/><BR/>
+ <BR/>
long double stold(const u16string& str, size_t
*idx = 0);
- <BR/><BR/>
+ <BR/>
u16string to_u16string(long long val);
- <BR/><BR/>
+ <BR/>
u16string to_u16string(unsigned long long val);
- <BR/><BR/>
+ <BR/>
u16string to_u16string(long double val);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
int stoi(const u32string& str, size_t *idx = 0,
int base = 10);
- <BR/><BR/>
+ <BR/>
long stol(const u32string& str, size_t *idx = 0,
int base = 10);
- <BR/><BR/>
+ <BR/>
unsigned long stoul(const u32string& str, size_t
*idx = 0, int base = 10);
- <BR/><BR/>
+ <BR/>
long long stoll(const u32string& str, size_t *idx
= 0, int base = 10);
- <BR/><BR/>
+ <BR/>
unsigned long long stoull(const u32string& str,
size_t *idx = 0, int base = 10);
- <BR/><BR/>
+ <BR/>
float stof(const u32string& str, size_t *idx =
0);
- <BR/><BR/>
+ <BR/>
double stod(const u32string& str, size_t *idx =
0);
- <BR/><BR/>
+ <BR/>
long double stold(const u32string& str, size_t
*idx = 0);
- <BR/><BR/>
+ <BR/>
u32string to_u32string(long long val);
- <BR/><BR/>
+ <BR/>
u32string to_u32string(unsigned long long val);
- <BR/><BR/>
+ <BR/>
u32string to_u32string(long double val);
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
27.2
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
...
- <BR/><BR/>
+ <BR/>
typedef basic_ios<char> ios;
- <BR/><BR/>
+ <BR/>
typedef basic_ios<wchar_t> wios;
- <BR/><BR/>
+ <BR/>
typedef basic_ios<char16_t> u16ios;
- <BR/><BR/>
+ <BR/>
typedef basic_ios<char32_t> u32ios;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
...
- <BR/><BR/>
+ <BR/>
typedef basic_ifstream<wchar_t> wifstream;
- <BR/><BR/>
+ <BR/>
typedef basic_ofstream<wchar_t> wofstream;
- <BR/><BR/>
+ <BR/>
typedef basic_fstream<wchar_t> wfstream;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
typedef basic_streambuf<char16_t> u16streambuf;
- <BR/><BR/>
+ <BR/>
typedef basic_istream<char16_t> u16istream;
- <BR/><BR/>
+ <BR/>
typedef basic_ostream<char16_t> u16ostream;
- <BR/><BR/>
+ <BR/>
typedef basic_iostream<char16_t> u16iostream;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
typedef basic_stringbuf<char16_t> u16stringbuf;
- <BR/><BR/>
+ <BR/>
typedef basic_istringstream<char16_t>
u16istringstream;
- <BR/><BR/>
+ <BR/>
typedef basic_ostringstream<char16_t>
u16ostringstream;
- <BR/><BR/>
+ <BR/>
typedef basic_stringstream<char16_t>
u16stringstream;
- <BR/><BR/>
+ <BR/>
typedef basic_filebuf<char16_t> u16filebuf;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
typedef basic_ifstream<char16_t> u16ifstream;
- <BR/><BR/>
+ <BR/>
typedef basic_ofstream<char16_t> u16ofstream;
- <BR/><BR/>
+ <BR/>
typedef basic_fstream<char16_t> u16fstream;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
typedef basic_streambuf<char32_t> u32streambuf;
- <BR/><BR/>
+ <BR/>
typedef basic_istream<char32_t> u32istream;
- <BR/><BR/>
+ <BR/>
typedef basic_ostream<char32_t> u32ostream;
- <BR/><BR/>
+ <BR/>
typedef basic_iostream<char32_t> u32iostream;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
typedef basic_stringbuf<char32_t> u32stringbuf;
- <BR/><BR/>
+ <BR/>
typedef basic_istringstream<char32_t>
u32istringstream;
- <BR/><BR/>
+ <BR/>
typedef basic_ostringstream<char32_t>
u32ostringstream;
- <BR/><BR/>
+ <BR/>
typedef basic_stringstream<char32_t>
u32stringstream;
- <BR/><BR/>
+ <BR/>
typedef basic_filebuf<char32_t> u32filebuf;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
typedef basic_ifstream<char32_t> u32ifstream;
- <BR/><BR/>
+ <BR/>
typedef basic_ofstream<char32_t> u32ofstream;
- <BR/><BR/>
+ <BR/>
<u>typedef basic_fstream<char32_t>
u32fstream;</u>
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
...
- <BR/><BR/>
+ <BR/>
template <class state> class fpos;
- <BR/><BR/>
+ <BR/>
typedef
fpos<char_traits<char>::state_type> streampos;
- <BR/><BR/>
+ <BR/>
typedef
fpos<char_traits<wchar_t>::state_type>
wstreampos;
- <BR/><BR/>
+ <BR/>
typedef
fpos<char_traits<char16_t>::state_type>
u16streampos;
- <BR/><BR/>
+ <BR/>
typedef
fpos<char_traits<char32_t>::state_type>
u32streampos;
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
27.6
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT> >
- <BR/><BR/>
+ <BR/>
class basic_istream;
- <BR/><BR/>
+ <BR/>
typedef basic_istream<char> istream;
- <BR/><BR/>
+ <BR/>
typedef basic_istream<wchar_t> wistream;
- <BR/><BR/>
+ <BR/>
<u>typedef basic_istream<char16_t>
u16istream;</u>
- <BR/><BR/>
+ <BR/>
typedef basic_istream<char32_t> u32istream;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT> >
- <BR/><BR/>
+ <BR/>
class basic_iostream;
- <BR/><BR/>
+ <BR/>
typedef basic_iostream<char> iostream;
- <BR/><BR/>
+ <BR/>
typedef basic_iostream<wchar_t> wiostream;
- <BR/><BR/>
+ <BR/>
<u>typedef basic_iostream<char16_t>
u16iostream;</u>
- <BR/><BR/>
+ <BR/>
typedef basic_iostream<char32_t> u32iostream;
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT> >
- <BR/><BR/>
+ <BR/>
class basic_ostream;
- <BR/><BR/>
+ <BR/>
typedef basic_ostream<char> ostream;
- <BR/><BR/>
+ <BR/>
typedef basic_ostream<wchar_t> wostream;
- <BR/><BR/>
+ <BR/>
<u>typedef basic_ostream<char16_t>
u16ostream;</u>
- <BR/><BR/>
+ <BR/>
typedef basic_ostream<char32_t> u32ostream;
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
27.7 paragraph 1
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT>,
- <BR/><BR/>
+ <BR/>
class Allocator =
allocator<charT> >
- <BR/><BR/>
+ <BR/>
class basic_stringbuf;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
typedef basic_stringbuf<char> stringbuf;
- <BR/><BR/>
+ <BR/>
typedef basic_stringbuf<wchar_t> wstringbuf;
- <BR/><BR/>
+ <BR/>
<u>typedef basic_stringbuf<char16_t>
u16stringbuf;</u>
- <BR/><BR/>
+ <BR/>
typedef basic_stringbuf<char32_t> u32stringbuf;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT>,
- <BR/><BR/>
+ <BR/>
class Allocator =
allocator<charT> >
- <BR/><BR/>
+ <BR/>
class basic_istringstream;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
typedef basic_istringstream<char>
istringstream;
- <BR/><BR/>
+ <BR/>
typedef basic_istringstream<wchar_t>
wistringstream;
- <BR/><BR/>
+ <BR/>
<u>typedef basic_istringstream<char16_t>
u16istringstream;</u>
- <BR/><BR/>
+ <BR/>
typedef basic_istringstream<char32_t>
u32istringstream;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT>,
- <BR/><BR/>
+ <BR/>
class Allocator =
allocator<charT> >
- <BR/><BR/>
+ <BR/>
class basic_ostringstream;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
typedef basic_ostringstream<char>
ostringstream;
- <BR/><BR/>
+ <BR/>
typedef basic_ostringstream<wchar_t>
wostringstream;
- <BR/><BR/>
+ <BR/>
<u>typedef basic_ostringstream<char16_t>
u16ostringstream;</u>
- <BR/><BR/>
+ <BR/>
typedef basic_ostringstream<char32_t>
u32ostringstream;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT>,
- <BR/><BR/>
+ <BR/>
class Allocator =
allocator<charT> >
- <BR/><BR/>
+ <BR/>
class basic_stringstream;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
typedef basic_stringstream<char> stringstream;
- <BR/><BR/>
+ <BR/>
typedef basic_stringstream<wchar_t>
wstringstream;
- <BR/><BR/>
+ <BR/>
typedef basic_stringstream<char16_t>
u16stringstream;
- <BR/><BR/>
+ <BR/>
typedef basic_stringstream<char32_t>
u32stringstream;
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
27.8.1 paragraph 1
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT> >
- <BR/><BR/>
+ <BR/>
class basic_filebuf;
- <BR/><BR/>
+ <BR/>
typedef basic_filebuf<char> filebuf;
- <BR/><BR/>
+ <BR/>
typedef basic_filebuf<wchar_t> wfilebuf;
- <BR/><BR/>
+ <BR/>
<u>typedef basic_filebuf<char16_t>
u16filebuf;</u>
- <BR/><BR/>
+ <BR/>
typedef basic_filebuf<char32_t> u32filebuf;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT> >
- <BR/><BR/>
+ <BR/>
class basic_ifstream;
- <BR/><BR/>
+ <BR/>
typedef basic_ifstream<char> ifstream;
- <BR/><BR/>
+ <BR/>
typedef basic_ifstream<wchar_t> wifstream;
- <BR/><BR/>
+ <BR/>
<u>typedef basic_ifstream<char16_t>
u16ifstream;</u>
- <BR/><BR/>
+ <BR/>
typedef basic_ifstream<char32_t> u32ifstream;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT> >
- <BR/><BR/>
+ <BR/>
class basic_ofstream;
- <BR/><BR/>
+ <BR/>
typedef basic_ofstream<char> ofstream;
- <BR/><BR/>
+ <BR/>
typedef basic_ofstream<wchar_t> wofstream;
- <BR/><BR/>
+ <BR/>
<u>typedef basic_ofstream<char16_t>
u16ofstream;</u>
- <BR/><BR/>
+ <BR/>
typedef basic_ofstream<char32_t> u32ofstream;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT> >
- <BR/><BR/>
+ <BR/>
class basic_fstream;
- <BR/><BR/>
+ <BR/>
typedef basic_fstream<char> fstream;
- <BR/><BR/>
+ <BR/>
typedef basic_fstream<wchar_t> wfstream;
- <BR/><BR/>
+ <BR/>
<u>typedef basic_fstream<char16_t>
u16fstream;</u>
- <BR/><BR/>
+ <BR/>
typedef basic_fstream<char32_t> u32fstream;
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
28.4
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
...
- <BR/><BR/>
+ <BR/>
typedef basic_regex<char> regex;
- <BR/><BR/>
+ <BR/>
typedef basic_regex<wchar_t> wregex;
- <BR/><BR/>
+ <BR/>
typedef basic_regex<char16_t> u16regex;
- <BR/><BR/>
+ <BR/>
typedef basic_regex<char32_t> u32regex;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
...
- <BR/><BR/>
+ <BR/>
typedef sub_match<const char*> csub_match;
- <BR/><BR/>
+ <BR/>
typedef sub_match<const wchar_t*> wcsub_match;
- <BR/><BR/>
+ <BR/>
typedef sub_match<const char16_t*>
u16csub_match;
- <BR/><BR/>
+ <BR/>
typedef sub_match<const char32_t*>
u16csub_match;
- <BR/><BR/>
+ <BR/>
typedef sub_match<string::const_iterator>
ssub_match;
- <BR/><BR/>
+ <BR/>
typedef sub_match<wstring::const_iterator>
wssub_match;
- <BR/><BR/>
+ <BR/>
typedef sub_match<u16string::const_iterator>
u16ssub_match;
- <BR/><BR/>
+ <BR/>
typedef sub_match<u32string::const_iterator>
u32ssub_match;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
...
- <BR/><BR/>
+ <BR/>
typedef match_results<const char*> cmatch;
- <BR/><BR/>
+ <BR/>
typedef match_results<const wchar_t*> wcmatch;
- <BR/><BR/>
+ <BR/>
typedef match_results<const char16_t*>
u16cmatch;
- <BR/><BR/>
+ <BR/>
typedef match_results<const char32_t*>
u32cmatch;
- <BR/><BR/>
+ <BR/>
typedef match_results<string::const_iterator>
smatch;
- <BR/><BR/>
+ <BR/>
typedef match_results<wstring::const_iterator>
wsmatch;
- <BR/><BR/>
+ <BR/>
typedef
match_results<u16string::const_iterator> u16smatch;
- <BR/><BR/>
+ <BR/>
typedef
match_results<u32string::const_iterator> u32smatch;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
...
- <BR/><BR/>
+ <BR/>
typedef regex_iterator<const char*>
cregex_iterator;
- <BR/><BR/>
+ <BR/>
typedef regex_iterator<const wchar_t*>
wcregex_iterator;
- <BR/><BR/>
+ <BR/>
typedef regex_iterator<const cha16r_t*>
u16cregex_iterator;
- <BR/><BR/>
+ <BR/>
typedef regex_iterator<const char32_t*>
u32cregex_iterator;
- <BR/><BR/>
+ <BR/>
typedef regex_iterator<string::const_iterator>
sregex_iterator;
- <BR/><BR/>
+ <BR/>
typedef regex_iterator<wstring::const_iterator>
wsregex_iterator;
- <BR/><BR/>
+ <BR/>
typedef
regex_iterator<u16string::const_iterator>
u16sregex_iterator;
- <BR/><BR/>
+ <BR/>
typedef
regex_iterator<u32string::const_iterator>
u32sregex_iterator;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
...
- <BR/><BR/>
+ <BR/>
typedef regex_token_iterator<const char*>
cregex_token_iterator;
- <BR/><BR/>
+ <BR/>
typedef regex_token_iterator<const wchar_t*>
wcregex_token_iterator;
- <BR/><BR/>
+ <BR/>
typedef regex_token_iterator<const char16_t*>
u16cregex_token_iterator;
- <BR/><BR/>
+ <BR/>
typedef regex_token_iterator<const char32_t*>
u32cregex_token_iterator;
- <BR/><BR/>
+ <BR/>
typedef
regex_token_iterator<string::const_iterator>
sregex_token_iterator;
- <BR/><BR/>
+ <BR/>
typedef
regex_token_iterator<wstring::const_iterator><span lang="zxx">
   </span>wsregex_token_iterator;
- <BR/><BR/>
+ <BR/>
typedef
regex_token_iterator<u16string::const_iterator>
u16sregex_token_iterator;
- <BR/><BR/>
+ <BR/>
typedef
regex_token_iterator<u32string::const_iterator><span lang="zxx">
 </span>u32sregex_token_iterator;
- <BR/><BR/>}
+ <BR/>}
</suggestion>
<notes>
-Done
+Done. Original section of "17 Library" deleted so that comment will sort as the first actual
+section affected.
</notes>
<rationale>
Previously considered; we decided not to do it. We believe it is
@@ -8286,30 +8307,30 @@
</description>
<suggestion>
Correct as follows.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class T> class numeric_limits<const
T>;
- <BR/><BR/>
+ <BR/>
template<class T> class numeric_limits<volatile
T>;
- <BR/><BR/>
+ <BR/>
template<class T> class numeric_limits<const
volatile T>;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
should be
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<<u>Regular</u> T> class
numeric_limits<const T>;
- <BR/><BR/>
+ <BR/>
template<<u>Regular</u> T> class
numeric_limits<volatile T>;
- <BR/><BR/>
+ <BR/>
template<<u>Regular</u> T> class
numeric_limits<const volatile T>;
</suggestion>
@@ -9243,32 +9264,9 @@
</rationale>
</comment>
-<comment nb="UK" num="98" uknum="402" type="Te" owner="LWG" issue="1055" disp="" date="" extdoc="">
+<comment nb="UK" num="204" uknum="239" type="Te" owner="LWG" issue="1020" disp="accepted" date="" extdoc="">
<section>
-20.5.6
-</section>
-<para></para>
-<description>
- It would be
- useful to be able to determine the underlying type of an
- arbitrary enumeration type. This would allow safe casting
- to an integral type (especially needed for scoped enums,
- which do not promote), and would allow use of
- numeric_limits. In general it makes generic programming
- with enumerations easier.
-</description>
-<suggestion>
- Add a TransformationTrait to 20.5.6 that
- returns the underlying type of an enumeration type.
-</suggestion>
-<notes>Originlly submitted as section: 7.2 ¶ 5</notes>
-<rationale>
-</rationale>
-</comment>
-
-<comment nb="UK" num="204" uknum="239" type="Te" owner="LWG" issue="1020" disp="accepted" date="" extdoc="">
-<section>
-20.5.7 [meta.trans.other]
+20.5.7 [meta.trans.other]
</section>
<para>
Table 41
@@ -9557,33 +9555,33 @@
<BR/><BR/>
template<class F, Allocator A>
function(allocator_arg_t, const A&, F);
- <BR/><BR/>
+ <BR/>
template<class F, Allocator A>
function(allocator_arg_t, const A&, F&&);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>should be
- <BR/><BR/>
+ <BR/>should be
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class F, Allocator A>
- <BR/><BR/>
+ <BR/>
requires CopyConstructible<F> &&
Callable<F, ArgTypes...>
- <BR/><BR/>
+ <BR/>
&& Convertible<Callable<F,
ArgTypes...>::result_type, R>
- <BR/><BR/>
+ <BR/>
function(allocator_arg_t, const A&, F);
- <BR/><BR/>
+ <BR/>
template<class F, Allocator A>
- <BR/><BR/>
+ <BR/>
requires CopyConstructible<F> &&
Callable<F, ArgTypes...>
- <BR/><BR/>
+ <BR/>
&& Convertible<Callable<F,
ArgTypes...>::result_type, R>
- <BR/><BR/>
+ <BR/>
function(allocator_arg_t, const A&, F&&);
</suggestion>
<notes>
@@ -9669,26 +9667,26 @@
Correct as follows.
<BR/><BR/>
template <class R, class... Args>
- <BR/><BR/>
+ <BR/>
concept_map UsesAllocator<function<R(Args...)>,
Alloc> {
- <BR/><BR/>
+ <BR/>
typedef Alloc allocator_type;
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>should be
- <BR/><BR/>
+ <BR/>should be
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <<u>Returnable</u> R,
<u>CopyConstructible</u>... Args>
- <BR/><BR/>
+ <BR/>
concept_map UsesAllocator<function<R(Args...)>,
Alloc> {
- <BR/><BR/>
+ <BR/>
typedef Alloc allocator_type;
- <BR/><BR/>}
+ <BR/>}
</suggestion>
<notes>Done</notes>
<rationale>This change would be redundant because function<> is already sufficiently
@@ -9712,71 +9710,71 @@
</description>
<suggestion>
Correct as follows.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <MoveConstructible R, MoveConstructible...
ArgTypes>
- <BR/><BR/>
+ <BR/>
bool operator==(const function<R(ArgTypes...)>&,
nullptr_t);
- <BR/><BR/>
+ <BR/>
template <MoveConstructible R, MoveConstructible...
ArgTypes>
- <BR/><BR/>
+ <BR/>
bool operator==(nullptr_t, const
function<R(ArgTypes...)>&);
- <BR/><BR/>
+ <BR/>
template <MoveConstructible R, MoveConstructible...
ArgTypes>
- <BR/><BR/>
+ <BR/>
bool operator!=(const function<R(ArgTypes...)>&,
nullptr_t);
- <BR/><BR/>
+ <BR/>
template <MoveConstructible R, MoveConstructible...
ArgTypes>
- <BR/><BR/>
+ <BR/>
bool operator!=(nullptr_t, const
function<R(ArgTypes...)>&);
- <BR/><BR/>
+ <BR/>
template <MoveConstructible R, MoveConstructible...
ArgTypes>
- <BR/><BR/>
+ <BR/>
void swap(function<R(ArgTypes...)>&,
function<R(ArgTypes...)>&);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>should be
- <BR/><BR/>
+ <BR/>should be
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <<u>Returnable</u> R,
<u>CopyConstructible</u>... ArgTypes>
- <BR/><BR/>
+ <BR/>
bool operator==(const function<R(ArgTypes...)>&,
nullptr_t);
- <BR/><BR/>
+ <BR/>
template <<u>Returnable</u> R,
<u>CopyConstructible</u>... ArgTypes>
- <BR/><BR/>
+ <BR/>
bool operator==(nullptr_t, const
function<R(ArgTypes...)>&);
- <BR/><BR/>
+ <BR/>
template <<u>Returnable</u> R,
<u>CopyConstructible</u>... ArgTypes>
- <BR/><BR/>
+ <BR/>
bool operator!=(const function<R(ArgTypes...)>&,
nullptr_t);
- <BR/><BR/>
+ <BR/>
template <<u>Returnable</u> R,
<u>CopyConstructible</u>... ArgTypes>
- <BR/><BR/>
+ <BR/>
bool operator!=(nullptr_t, const
function<R(ArgTypes...)>&);
- <BR/><BR/>
+ <BR/>
template <<u>Returnable</u> R,
<u>CopyConstructible</u>... ArgTypes>
- <BR/><BR/>void
+ <BR/>void
swap(function<R(ArgTypes...)>&,
function<R(ArgTypes...)>&);
</suggestion>
@@ -10465,61 +10463,61 @@
requiring the client to extract and operate directly on the
duration’s representation as the latter will not
enforce the correct units of the operation.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>Ex:
- <BR/><BR/>
+ <BR/>Ex:
+ <BR/>
- <BR/><BR/>
+ <BR/>
milliseconds ms(...);
- <BR/><BR/>
+ <BR/>
microseconds us(...);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>ms
+ <BR/>ms
% us; // microseconds
- <BR/><BR/>us
+ <BR/>us
% ms; // microseconds
- <BR/><BR/>ms
+ <BR/>ms
% 5; // milliseconds
- <BR/><BR/>5 %
+ <BR/>5 %
ms; // does not compile
</description>
<suggestion>
Add:
- <BR/><BR/>
- <BR/><BR/>
+ <BR/>
+ <BR/>
template <class Rep, class Period = ratio<1>>
- <BR/><BR/>
+ <BR/>
class duration {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>...
- <BR/><BR/>duration&
+ <BR/>...
+ <BR/>duration&
operator%(const rep&);
- <BR/><BR/>duration&
+ <BR/>duration&
operator%(const duration&);
- <BR/><BR/>..
- <BR/><BR/>};
- <BR/><BR/>
- <BR/><BR/>template
+ <BR/>..
+ <BR/>};
+ <BR/>
+ <BR/>template
<class Rep1, class Period,
- <BR/><BR/>class Rep2>
- <BR/><BR/>
+ <BR/>class Rep2>
+ <BR/>
duration<typename common_type<
- <BR/><BR/>Rep1,
+ <BR/>Rep1,
Rep2>::type, Period>
- <BR/><BR/>operator%(const
+ <BR/>operator%(const
duration<Rep1, Period>& d, const Rep2& s);
- <BR/><BR/>
- <BR/><BR/>template
+ <BR/>
+ <BR/>template
<class Rep1, class Period1,
- <BR/><BR/>class Rep2,
+ <BR/>class Rep2,
class Period2>
- <BR/><BR/>typename
+ <BR/>typename
common_type<duration<Rep1, Period1>,
duration<Rep2, Period2>>::type
- <BR/><BR/>operator%(const
+ <BR/>operator%(const
duration<Rep1, Period1>& lhs, const
duration<Rep2, Period2>& rhs);
</suggestion>
@@ -10591,693 +10589,693 @@
"class InputIterator" is changed to "InputIterator Iter".
<BR/><BR/>
- <BR/><BR/>//
+ <BR/>//
21.3, basic_string:
- <BR/><BR/>
+ <BR/>
template<class charT, class traits =
char_traits<charT>,
- <BR/><BR/>
+ <BR/>
<u>Allocator</u> Alloc = allocator<charT> >
- <BR/><BR/>
+ <BR/>
class basic_string;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
operator+(const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>&&
- <BR/><BR/>
+ <BR/>
operator+(basic_string<charT,traits,<u>Alloc</u>>&&
lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>&&
- <BR/><BR/>
+ <BR/>
operator+(const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>&&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>&&
- <BR/><BR/>
+ <BR/>
operator+(basic_string<charT,traits,<u>Alloc</u>>&&
lhs,
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>&&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
operator+(const charT* lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>&&
- <BR/><BR/>
+ <BR/>
operator+(const charT* lhs,
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>&&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
operator+(charT lhs, const
basic_string<charT,traits,<u>Alloc</u>>& rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>&&
- <BR/><BR/>
+ <BR/>
operator+(charT lhs,
basic_string<charT,traits,<u>Alloc</u>>&&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
operator+(const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const charT* rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>&&
- <BR/><BR/>
+ <BR/>
operator+(basic_string<charT,traits,<u>Alloc</u>>&&
lhs,
- <BR/><BR/>
+ <BR/>
const charT* rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
operator+(const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
charT rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>&&
- <BR/><BR/>
+ <BR/>
operator+(basic_string<charT,traits,<u>Alloc</u>>&&
lhs, charT rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator==(const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator==(const charT* lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator==(const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const charT* rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator!=(const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator!=(const charT* lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator!=(const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const charT* rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator< (const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator< (const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const charT* rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator< (const charT* lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator> (const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator> (const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const charT* rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator> (const charT* lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator<=(const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator<=(const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const charT* rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator<=(const charT* lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator>=(const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator>=(const
basic_string<charT,traits,<u>Alloc</u>>& lhs,
- <BR/><BR/>
+ <BR/>
const charT* rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
bool operator>=(const charT* lhs,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
21.3.8.8: swap
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
void swap(basic_string<charT,traits,Alloc>& lhs,
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,Alloc>& rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
void swap(basic_string<charT,traits,Alloc>&&
lhs,
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,Alloc>& rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
void swap(basic_string<charT,traits,Alloc>& lhs,
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,Alloc>&& rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
21.3.8.9: inserters and extractors
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_istream<charT,traits>&
- <BR/><BR/>
+ <BR/>
operator>>(basic_istream<charT,traits>&&
is,
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>& str);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_ostream<charT, traits>&
- <BR/><BR/>
+ <BR/>
operator<<(basic_ostream<charT,
traits>&& os,
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
str);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_istream<charT,traits>&
- <BR/><BR/>
+ <BR/>
getline(basic_istream<charT,traits>&& is,
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>& str,
- <BR/><BR/>
+ <BR/>
charT delim);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class charT, class traits, <u>Allocator</u>
<u>Alloc</u>>
- <BR/><BR/>
+ <BR/>
basic_istream<charT,traits>&
- <BR/><BR/>
+ <BR/>
getline(basic_istream<charT,traits>&& is,
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>>& str);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
21.3 Class template basic_string
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
template<class charT, class traits =
char_traits<charT>,
- <BR/><BR/>
+ <BR/>
<u>Allocator Alloc</u> = allocator<charT> >
- <BR/><BR/>
+ <BR/>
class basic_string {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>//
+ <BR/>//
types:
- <BR/><BR/>
+ <BR/>
typedef traits traits_type;
- <BR/><BR/>
+ <BR/>
typedef typename traits::char_type value_type;
- <BR/><BR/>
+ <BR/>
typedef <u>Alloc</u> allocator_type;
- <BR/><BR/>
+ <BR/>
typedef typename <u>Alloc</u>::size_type size_type;
- <BR/><BR/>
+ <BR/>
typedef typename <u>Alloc</u>::difference_type
difference_type;
- <BR/><BR/>
+ <BR/>
typedef typename <u>Alloc</u>::reference reference;
- <BR/><BR/>
+ <BR/>
typedef typename <u>Alloc</u>::const_reference
const_reference;
- <BR/><BR/>
+ <BR/>
typedef typename <u>Alloc</u>::pointer pointer;
- <BR/><BR/>
+ <BR/>
typedef typename <u>Alloc</u>::const_pointer const_pointer;
- <BR/><BR/>
+ <BR/>
typedef implementation-defined iterator; // See 23.1
- <BR/><BR/>
+ <BR/>
typedef implementation-defined const_iterator; // See 23.1
- <BR/><BR/>
+ <BR/>
typedef std::reverse_iterator<iterator>
reverse_iterator;
- <BR/><BR/>
+ <BR/>
typedef std::reverse_iterator<const_iterator>
const_reverse_iterator;
- <BR/><BR/>
+ <BR/>
static const size_type npos = -1;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
21.3.2 construct/copy/destroy:
- <BR/><BR/>
+ <BR/>
explicit basic_string(const <u>Alloc</u>& a =
<u>Alloc</u>());
- <BR/><BR/>
+ <BR/>
basic_string(const basic_string& str);
- <BR/><BR/>
+ <BR/>
basic_string(basic_string&& str);
- <BR/><BR/>
+ <BR/>
basic_string(const basic_string& str, size_type pos,
size_type n = npos,
- <BR/><BR/>
+ <BR/>
const <u>Alloc</u>& a = <u>Alloc</u>());
- <BR/><BR/>
+ <BR/>
basic_string(const charT* s,
- <BR/><BR/>
+ <BR/>
size_type n, const <u>Alloc</u>& a = <u>Alloc</u>());
- <BR/><BR/>
+ <BR/>
basic_string(const charT* s, const <u>Alloc</u>& a =
<u>Alloc</u>());
- <BR/><BR/>
+ <BR/>
basic_string(size_type n, charT c, const <u>Alloc</u>&
a = <u>Alloc</u>());
- <BR/><BR/>
+ <BR/>
template<<u>InputIterator</u> <u>Iter</u>>
- <BR/><BR/>
+ <BR/>
basic_string(<u>Iter</u> begin, <u>Iter</u> end,
- <BR/><BR/>
+ <BR/>
const <u>Alloc</u>& a = <u>Alloc</u>());
- <BR/><BR/>
+ <BR/>
basic_string(initializer_list<charT>, const
<u>Alloc</u>& = <u>Alloc</u>());
- <BR/><BR/>
+ <BR/>
basic_string(const basic_string&, const
<u>Alloc</u>&);
- <BR/><BR/>
+ <BR/>
basic_string(basic_string&&, const
<u>Alloc</u>&);
- <BR/><BR/>
+ <BR/>
~basic_string();
- <BR/><BR/>
+ <BR/>
basic_string& operator=(const basic_string& str);
- <BR/><BR/>
+ <BR/>
basic_string& operator=(basic_string&& str);
- <BR/><BR/>
+ <BR/>
basic_string& operator=(const charT* s);
- <BR/><BR/>
+ <BR/>
basic_string& operator=(charT c);
- <BR/><BR/>
+ <BR/>
basic_string& operator=(initializer_list<charT>);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
21.3.3 iterators:
- <BR/><BR/>...
- <BR/><BR/>
+ <BR/>...
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
21.3.4 capacity:
- <BR/><BR/>...
- <BR/><BR/>
+ <BR/>...
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
21.3.5 element access:
- <BR/><BR/>...
- <BR/><BR/>
+ <BR/>...
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
21.3.6 modifiers:
- <BR/><BR/>...
- <BR/><BR/>
+ <BR/>...
+ <BR/>
- <BR/><BR/>
+ <BR/>
basic_string& append(const basic_string& str);
- <BR/><BR/>
+ <BR/>
basic_string& append(const basic_string& str,
size_type pos,
- <BR/><BR/>
+ <BR/>
size_type n);
- <BR/><BR/>
+ <BR/>
basic_string& append(const charT* s, size_type n);
- <BR/><BR/>
+ <BR/>
basic_string& append(const charT* s);
- <BR/><BR/>
+ <BR/>
basic_string& append(size_type n, charT c);
- <BR/><BR/>
+ <BR/>
template<<u>InputIterator</u> <u>Iter</u>>
- <BR/><BR/>
+ <BR/>
basic_string& append(<u>Iter</u> first, <u>Iter</u>
last);
- <BR/><BR/>
+ <BR/>
basic_string& append(initializer_list<charT>);
- <BR/><BR/>
+ <BR/>
void push_back(charT c);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
basic_string& assign(const basic_string& str);
- <BR/><BR/>
+ <BR/>
basic_string& assign(basic_string&& str);
- <BR/><BR/>
+ <BR/>
basic_string& assign(const basic_string& str,
size_type pos,
- <BR/><BR/>
+ <BR/>
size_type n);
- <BR/><BR/>
+ <BR/>
basic_string& assign(const charT* s, size_type n);
- <BR/><BR/>
+ <BR/>
basic_string& assign(const charT* s);
- <BR/><BR/>
+ <BR/>
basic_string& assign(size_type n, charT c);
- <BR/><BR/>
+ <BR/>
template<<u>InputIterator</u> <u>Iter</u>>
- <BR/><BR/>
+ <BR/>
basic_string& assign(<u>Iter</u> first, <u>Iter</u>
last);
- <BR/><BR/>
+ <BR/>
basic_string& assign(initializer_list<charT>);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
basic_string& insert(size_type pos1, const
basic_string& str);
- <BR/><BR/>
+ <BR/>
basic_string& insert(size_type pos1, const
basic_string& str,
- <BR/><BR/>
+ <BR/>
size_type pos2, size_type n);
- <BR/><BR/>
+ <BR/>
basic_string& insert(size_type pos, const charT* s,
size_type n);
- <BR/><BR/>
+ <BR/>
basic_string& insert(size_type pos, const charT* s);
- <BR/><BR/>
+ <BR/>
basic_string& insert(size_type pos, size_type n, charT
c);
- <BR/><BR/>
+ <BR/>
iterator insert(const_iterator p, charT c);
- <BR/><BR/>
+ <BR/>
void insert(const_iterator p, size_type n, charT c);
- <BR/><BR/>
+ <BR/>
template<<u>InputIterator</u> <u>Iter</u>>
- <BR/><BR/>
+ <BR/>
void insert(const_iterator p, <u>Iter</u> first,
<u>Iter</u> last);
- <BR/><BR/>
+ <BR/>
void insert(const_iterator p,
initializer_list<charT>);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>...
- <BR/><BR/>
+ <BR/>...
+ <BR/>
basic_string& replace(size_type pos1, size_type n1,
- <BR/><BR/>
+ <BR/>
const basic_string& str);
- <BR/><BR/>
+ <BR/>
basic_string& replace(size_type pos1, size_type n1,
- <BR/><BR/>
+ <BR/>
const basic_string& str,
- <BR/><BR/>
+ <BR/>
size_type pos2, size_type n2);
- <BR/><BR/>
+ <BR/>
basic_string& replace(size_type pos, size_type n1,
const charT* s,
- <BR/><BR/>
+ <BR/>
size_type n2);
- <BR/><BR/>
+ <BR/>
basic_string& replace(size_type pos, size_type n1,
const charT* s);
- <BR/><BR/>
+ <BR/>
basic_string& replace(size_type pos, size_type n1,
size_type n2,
- <BR/><BR/>
+ <BR/>
charT c);
- <BR/><BR/>
+ <BR/>
basic_string& replace(iterator i1, iterator i2,
- <BR/><BR/>
+ <BR/>
const basic_string& str);
- <BR/><BR/>
+ <BR/>
basic_string& replace(iterator i1, iterator i2, const
charT* s,
- <BR/><BR/>
+ <BR/>
size_type n);
- <BR/><BR/>
+ <BR/>
basic_string& replace(iterator i1, iterator i2, const
charT* s);
- <BR/><BR/>
+ <BR/>
basic_string& replace(iterator i1, iterator i2,
- <BR/><BR/>
+ <BR/>
size_type n, charT c);
- <BR/><BR/>
+ <BR/>
template<<u>InputIterator</u> <u>Iter</u>>
- <BR/><BR/>
+ <BR/>
basic_string& replace(iterator i1, iterator i2,
- <BR/><BR/>
+ <BR/>
<u>Iter</u> j1, <u>Iter</u> j2);
- <BR/><BR/>
+ <BR/>
basic_string& replace(iterator, iterator,
initializer_list<charT>);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>...
- <BR/><BR/>
+ <BR/>...
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
21.3.7 string operations:
- <BR/><BR/>...
- <BR/><BR/>
+ <BR/>...
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class traits, <u>Allocator</u>
<u>Alloc></u>
- <BR/><BR/>
+ <BR/>
struct constructible_with_allocator_suffix<
- <BR/><BR/>
+ <BR/>
basic_string<charT, traits, <u>Alloc</u>> > :
true_type { };
</suggestion>
@@ -11497,35 +11495,35 @@
</description>
<suggestion>
Correct as follows.
- <BR/><BR/>
+ <BR/>
template<class Codecvt, class Elem = wchar_t> class
wstring_convert {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>
+ <BR/>
typedef std::basic_string<char> byte_string;
- <BR/><BR/>
+ <BR/>
typedef std::basic_string<Elem> wide_string;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>should be
- <BR/><BR/>
+ <BR/>should be
+ <BR/>
- <BR/><BR/>
+ <BR/>
template<class Codecvt, class Elem = wchar_t<u>,</u>
- <BR/><BR/>
+ <BR/>
<u>Allocator WideAllocator = allocator<Elem>,</u>
- <BR/><BR/>
+ <BR/>
<u>Allocator ByteAllocator = allocator<char></u>>
- <BR/><BR/>
+ <BR/>
class wstring_convert {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>
+ <BR/>
typedef std::basic_string<char,
<u>char_traits<char>, ByteAllocator</u>>
byte_string;
- <BR/><BR/>typedef
+ <BR/>typedef
std::basic_string<Elem, <u>char_traits<Elem>,
WideAllocator</u>> wide_string;
</suggestion>
@@ -11674,13 +11672,13 @@
Correct as follows.
<BR/><BR/>
Requires: [fmt,end) shall be a valid range.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
should be
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
Requires: [fmt,fmtend) shall be a valid range.
</suggestion>
<notes>[Being reviewed by Editor]</notes>
@@ -11701,116 +11699,116 @@
</description>
<suggestion>
Correct as follows.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
22.2.5.1
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class InputIterator =
istreambuf_iterator<charT> >
- <BR/><BR/>
+ <BR/>
class time_get : public locale::facet, public time_base {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>
+ <BR/>
typedef charT char_type;
- <BR/><BR/>
+ <BR/>
typedef InputIterator iter_type;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
should be
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, <u>InputIterator InputIter</u> =
istreambuf_iterator<charT> >
- <BR/><BR/>
+ <BR/>
class time_get : public locale::facet, public time_base {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>
+ <BR/>
typedef charT char_type;
- <BR/><BR/>
+ <BR/>
typedef <u>InputIter</u> iter_type;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
22.2.5.2
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class InputIterator =
istreambuf_iterator<charT> >
- <BR/><BR/>
+ <BR/>
class time_get_byname : public time_get<charT,
InputIterator> {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>
+ <BR/>
typedef time_base::dateorder dateorder;
- <BR/><BR/>
+ <BR/>
typedef InputIterator iter_type;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
should be
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, <u>InputIterator InputIter</u> =
istreambuf_iterator<charT> >
- <BR/><BR/>
+ <BR/>
class time_get_byname : public time_get<charT,
InputIter> {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>
+ <BR/>
typedef time_base::dateorder dateorder;
- <BR/><BR/>
+ <BR/>
typedef <u>InputIter</u> iter_type;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
22.2.6.1
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT,
- <BR/><BR/>
+ <BR/>
class InputIterator = istreambuf_iterator<charT> >
- <BR/><BR/>
+ <BR/>
class money_get : public locale::facet {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>
+ <BR/>
typedef charT char_type;
- <BR/><BR/>
+ <BR/>
typedef InputIterator iter_type;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
should be
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT,
- <BR/><BR/>
+ <BR/>
<u>InputIterator InputIter</u> =
istreambuf_iterator<charT> >
- <BR/><BR/>
+ <BR/>
class money_get : public locale::facet {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>
+ <BR/>
typedef charT char_type;
- <BR/><BR/>
+ <BR/>
typedef <u>InputIter</u> iter_type;
</suggestion>
<notes>to be handled by Howard Hinnant, Dave Abrahams, Martin Sebor, PJ Plauger</notes>
@@ -11830,79 +11828,79 @@
</description>
<suggestion>
Correct as follows.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
22.2.5.3
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class OutputIterator =
ostreambuf_iterator<charT> >
- <BR/><BR/>
+ <BR/>
class time_put : public locale::facet {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>
+ <BR/>
typedef charT char_type;
- <BR/><BR/>
+ <BR/>
typedef OutputIterator iter_type;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
<span lang="zxx"> </span>should be
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, <u>OutputIterator OutputIter</u>
= ostreambuf_iterator<charT> >
- <BR/><BR/>
+ <BR/>
class time_put : public locale::facet {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>
+ <BR/>
typedef charT char_type;
- <BR/><BR/>
+ <BR/>
typedef <u>OutputIter</u> iter_type;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
22.2.5.4
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class OutputIterator =
ostreambuf_iterator<charT> >
- <BR/><BR/>
+ <BR/>
class time_put_byname : public time_put<charT,
OutputIterator>
- <BR/><BR/>{
- <BR/><BR/>
+ <BR/>{
+ <BR/>
public:
- <BR/><BR/>
+ <BR/>
typedef charT char_type;
- <BR/><BR/>
+ <BR/>
typedef OutputIterator iter_type;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
should be
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, <u>OutputIterator OutputIter</u>
= ostreambuf_iterator<charT> >
- <BR/><BR/>
+ <BR/>
class time_put_byname : public time_put<charT,
OutputIter>
- <BR/><BR/>{
- <BR/><BR/>
+ <BR/>{
+ <BR/>
public:
- <BR/><BR/>
+ <BR/>
typedef charT char_type;
- <BR/><BR/>typedef <u>OutputIter</u>
+ <BR/>typedef <u>OutputIter</u>
iter_type;
</suggestion>
<notes>to be handled by Howard Hinnant, Dave Abrahams, Martin Sebor, PJ Plauger</notes>
@@ -13291,110 +13289,110 @@
<description>
Capability of an iterator is too much restricted by
concept.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
Concept of std::Range is defined as:
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
concept Range<typename T> {
- <BR/><BR/>
+ <BR/>
InputIterator iterator;
- <BR/><BR/>
+ <BR/>
iterator begin(T&);
- <BR/><BR/>
+ <BR/>
iterator end(T&);
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>So
+ <BR/>So
the following code generates an error.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <std::Range Rng>
- <BR/><BR/>
+ <BR/>
void sort(Rng& r)
- <BR/><BR/>{
- <BR/><BR/>
+ <BR/>{
+ <BR/>
// error! Rng::iterator does not satisfy requirements of a
random
- <BR/><BR/>
+ <BR/>
// access iterator.
- <BR/><BR/>
+ <BR/>
std::sort(begin(r), end(r));
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
std::vector<int> v; // vector::iterator is a random
access iterator.
- <BR/><BR/>
+ <BR/>
sort(v);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
This is because the concept of an iterator of std::Range is
InputIterator. For this reason, a random access iterator
loses its capability when passed to a std::Range parameter.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>To
+ <BR/>To
be able to work the above code, we need to write as
follows:
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <std::Range T>
- <BR/><BR/>
+ <BR/>
requires std::RandomAccessIterator<T::iterator>
&&
- <BR/><BR/>
+ <BR/>
std::ShuffleIterator<T::iterator> &&
- <BR/><BR/>
+ <BR/>
std::LessThanComparable<T::iterator::value_type>
- <BR/><BR/>
+ <BR/>
void sort(T& r)
- <BR/><BR/>{
- <BR/><BR/>
+ <BR/>{
+ <BR/>
sort(begin(r), end(r));
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
std::vector<int> v;
- <BR/><BR/>
+ <BR/>
sort(v);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>It
+ <BR/>It
needs quiet a few amount of codes like this only to recover
random access capability from InputIterator concept.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>We
+ <BR/>We
can write the following valid code with Boost.Range, which
is implemented with using C++03 SFINAE.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class Range>
- <BR/><BR/>
+ <BR/>
void sort(Range& r)
- <BR/><BR/>{
- <BR/><BR/>
+ <BR/>{
+ <BR/>
std::sort(boost::begin(r), boost::end(r));
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
std::vector<int> v;
- <BR/><BR/>
+ <BR/>
sort(v); // OK
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>One of the
+ <BR/>One of the
motivation to introduce concepts are supporting template
programming techniques by language directly to eliminate
hacky techniques such as tag-dispatch, SFINAE and Type
@@ -14680,84 +14678,84 @@
Alloc”.
<BR/><BR/>
Correct as follows.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT>,
- <BR/><BR/>
+ <BR/>
<u>Allocator Alloc</u> = allocator<charT> >
- <BR/><BR/>
+ <BR/>
class basic_stringbuf : public
basic_streambuf<charT,traits> {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>...
- <BR/><BR/>
+ <BR/>...
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
27.7.1.1 Constructors:
- <BR/><BR/>
+ <BR/>
explicit basic_stringbuf(ios_base::openmode which
- <BR/><BR/>=
+ <BR/>=
ios_base::in | ios_base::out);
- <BR/><BR/>
+ <BR/>
explicit basic_stringbuf
- <BR/><BR/>
+ <BR/>
(const basic_string<charT,traits,<u>Alloc</u>>&
str,
- <BR/><BR/>
+ <BR/>
ios_base::openmode which = ios_base::in | ios_base::out);
- <BR/><BR/>
+ <BR/>
basic_stringbuf(basic_stringbuf&& rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>...
- <BR/><BR/>
+ <BR/>...
+ <BR/>
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
27.7.1.3 Get and set:
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>> str() const;
- <BR/><BR/>
+ <BR/>
void str(const
basic_string<charT,traits,<u>Alloc</u>>& s);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>...
- <BR/><BR/>};
- <BR/><BR/>
+ <BR/>...
+ <BR/>};
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class traits, <u>Allocator
Alloc</u>>
- <BR/><BR/>
+ <BR/>
void swap(basic_stringbuf<charT, traits,
<u>Alloc</u>>& x,
- <BR/><BR/>
+ <BR/>
basic_stringbuf<charT, traits, <u>Alloc</u>>& y);
- <BR/><BR/>
+ <BR/>
template <class charT, class traits, <u>Allocator
Alloc</u>>
- <BR/><BR/>
+ <BR/>
void swap(basic_stringbuf<charT, traits,
<u>Alloc</u>>&& x,
- <BR/><BR/>
+ <BR/>
basic_stringbuf<charT, traits, <u>Alloc</u>>& y);
- <BR/><BR/>
+ <BR/>
template <class charT, class traits, <u>Allocator
Alloc</u>>
- <BR/><BR/>
+ <BR/>
void swap(basic_stringbuf<charT, traits,
<u>Alloc</u>>& x,
- <BR/><BR/>
+ <BR/>
basic_stringbuf<charT, traits,
<u>Alloc</u>>&& y);
- <BR/><BR/>}
+ <BR/>}
</suggestion>
<notes>
</notes>
@@ -14779,109 +14777,109 @@
Alloc”.
<BR/><BR/>
Correct as follows.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT>,
- <BR/><BR/>
+ <BR/>
<u>Allocator Alloc</u> = allocator<charT> >
- <BR/><BR/>
+ <BR/>
class basic_istringstream : public
basic_istream<charT,traits> {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>
+ <BR/>
typedef charT char_type;
- <BR/><BR/>
+ <BR/>
typedef typename traits::int_type int_type;
- <BR/><BR/>
+ <BR/>
typedef typename traits::pos_type pos_type;
- <BR/><BR/>
+ <BR/>
typedef typename traits::off_type off_type;
- <BR/><BR/>
+ <BR/>
typedef traits traits_type;
- <BR/><BR/>
+ <BR/>
typedef <u>Alloc</u> allocator_type;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
27.7.2.1 Constructors:
- <BR/><BR/>
+ <BR/>
explicit basic_istringstream(ios_base::openmode which =
ios_base::in);
- <BR/><BR/>
+ <BR/>
explicit basic_istringstream(
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
str,
- <BR/><BR/>
+ <BR/>
ios_base::openmode which = ios_base::in);
- <BR/><BR/>
+ <BR/>
basic_istringstream(basic_istringstream&& rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
27.7.2.2 Assign and swap:
- <BR/><BR/>
+ <BR/>
basic_istringstream&
operator=(basic_istringstream&& rhs);
- <BR/><BR/>
+ <BR/>
void swap(basic_istringstream&& rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
27.7.2.3 Members:
- <BR/><BR/>
+ <BR/>
basic_stringbuf<charT,traits,<u>Alloc</u>>* rdbuf()
const;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>> str() const;
- <BR/><BR/>
+ <BR/>
void str(const
basic_string<charT,traits,<u>Alloc</u>>& s);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
private:
- <BR/><BR/>//
+ <BR/>//
basic_stringbuf<charT,traits,<u>Alloc</u>> sb;
exposition only
- <BR/><BR/>};
- <BR/><BR/>
+ <BR/>};
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class traits, <u>Allocator
Alloc</u>>
- <BR/><BR/>
+ <BR/>
void swap(basic_istringstream<charT, traits,
<u>Alloc</u>>& x,
- <BR/><BR/>
+ <BR/>
basic_istringstream<charT, traits, <u>Alloc</u>>&
y);
- <BR/><BR/>
+ <BR/>
template <class charT, class traits, <u>Allocator
Alloc</u>>
- <BR/><BR/>
+ <BR/>
void swap(basic_istringstream<charT, traits,
<u>Alloc</u>>&& x,
- <BR/><BR/>
+ <BR/>
basic_istringstream<charT, traits, <u>Alloc</u>>&
y);
- <BR/><BR/>
+ <BR/>
template <class charT, class traits, <u>Allocator
Alloc</u>>
- <BR/><BR/>
+ <BR/>
void swap(basic_istringstream<charT, traits,
<u>Alloc</u>>& x,
- <BR/><BR/>
+ <BR/>
basic_istringstream<charT, traits,
<u>Alloc</u>>&& y);
- <BR/><BR/>}
+ <BR/>}
</suggestion>
<notes>
</notes>
@@ -14903,109 +14901,109 @@
Alloc”.
<BR/><BR/>
Correct as follows.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT>,
- <BR/><BR/>
+ <BR/>
<u>Allocator Alloc</u> = allocator<charT> >
- <BR/><BR/>
+ <BR/>
class basic_ostringstream : public
basic_ostream<charT,traits> {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>//
+ <BR/>//
types:
- <BR/><BR/>
+ <BR/>
typedef charT char_type;
- <BR/><BR/>
+ <BR/>
typedef typename traits::int_type int_type;
- <BR/><BR/>
+ <BR/>
typedef typename traits::pos_type pos_type;
- <BR/><BR/>
+ <BR/>
typedef typename traits::off_type off_type;
- <BR/><BR/>
+ <BR/>
typedef traits traits_type;
- <BR/><BR/>
+ <BR/>
typedef <u>Alloc</u> allocator_type;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
27.7.3.1 Constructors/destructor:
- <BR/><BR/>
+ <BR/>
explicit basic_ostringstream(ios_base::openmode which =
ios_base::out);
- <BR/><BR/>
+ <BR/>
explicit basic_ostringstream(
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
str,
- <BR/><BR/>
+ <BR/>
ios_base::openmode which = ios_base::out);
- <BR/><BR/>
+ <BR/>
basic_ostringstream(basic_ostringstream&& rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
27.7.3.2 Assign/swap:
- <BR/><BR/>
+ <BR/>
basic_ostringstream&
operator=(basic_ostringstream&& rhs);
- <BR/><BR/>
+ <BR/>
void swap(basic_ostringstream&& rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
27.7.3.3 Members:
- <BR/><BR/>
+ <BR/>
basic_stringbuf<charT,traits,<u>Alloc</u>>* rdbuf()
const;
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>> str() const;
- <BR/><BR/>
+ <BR/>
void str(const
basic_string<charT,traits,<u>Alloc</u>>& s);
- <BR/><BR/>
+ <BR/>
private:
- <BR/><BR/>//
+ <BR/>//
basic_stringbuf<charT,traits,<u>Alloc</u>> sb;
exposition only
- <BR/><BR/>};
- <BR/><BR/>
+ <BR/>};
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class traits, <u>Allocator</u>
<font size="2" style=
"font-size: 11pt"><u>Alloc</u>></font>
- <BR/><BR/>
+ <BR/>
void swap(basic_ostringstream<charT, traits,
<u>Alloc</u>>& x,
- <BR/><BR/>
+ <BR/>
basic_ostringstream<charT, traits, <u>Alloc</u>>&
y);
- <BR/><BR/>
+ <BR/>
template <class charT, class traits, <u>Allocator</u>
<font size="2" style=
"font-size: 11pt"><u>Alloc</u>></font>
- <BR/><BR/>
+ <BR/>
void swap(basic_ostringstream<charT, traits,
<u>Alloc</u>>&& x,
- <BR/><BR/>
+ <BR/>
basic_ostringstream<charT, traits, <u>Alloc</u>>&
y);
- <BR/><BR/>
+ <BR/>
template <class charT, class traits, <u>Allocator
Alloc</u>>
- <BR/><BR/>
+ <BR/>
void swap(basic_ostringstream<charT, traits,
<u>Alloc</u>>& x,
- <BR/><BR/>
+ <BR/>
basic_ostringstream<charT, traits,
<u>Alloc</u>>&& y);
- <BR/><BR/>}
+ <BR/>}
</suggestion>
<notes>
</notes>
@@ -15056,107 +15054,107 @@
Replace "class Allocator" to "Allocator Alloc".
<BR/><BR/>
Correct as follows.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
template <class charT, class traits =
char_traits<charT>,
- <BR/><BR/>
+ <BR/>
<u>Allocator Alloc</u> = allocator<charT> >
- <BR/><BR/>
+ <BR/>
class basic_stringstream
- <BR/><BR/>:
+ <BR/>:
public basic_iostream<charT,traits> {
- <BR/><BR/>
+ <BR/>
public:
- <BR/><BR/>//
+ <BR/>//
types:
- <BR/><BR/>
+ <BR/>
typedef charT char_type;
- <BR/><BR/>
+ <BR/>
typedef typename traits::int_type int_type;
- <BR/><BR/>
+ <BR/>
typedef typename traits::pos_type pos_type;
- <BR/><BR/>
+ <BR/>
typedef typename traits::off_type off_type;
- <BR/><BR/>
+ <BR/>
typedef traits traits_type;
- <BR/><BR/>
+ <BR/>
typedef <u>Alloc</u> allocator_type;
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
constructors/destructor
- <BR/><BR/>
+ <BR/>
explicit basic_stringstream(
- <BR/><BR/>
+ <BR/>
ios_base::openmode which = ios_base::out|ios_base::in);
- <BR/><BR/>
+ <BR/>
explicit basic_stringstream(
- <BR/><BR/>
+ <BR/>
const basic_string<charT,traits,<u>Alloc</u>>&
str,
- <BR/><BR/>
+ <BR/>
ios_base::openmode which = ios_base::out|ios_base::in);
- <BR/><BR/>
+ <BR/>
basic_stringstream(basic_stringstream&& rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
27.7.5.1 Assign/swap:
- <BR/><BR/>
+ <BR/>
void swap(basic_stringstream&& rhs);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>//
+ <BR/>//
Members:
- <BR/><BR/>
+ <BR/>
basic_stringbuf<charT,traits,<u>Alloc</u>>* rdbuf()
const;
- <BR/><BR/>
+ <BR/>
basic_string<charT,traits,<u>Alloc</u>> str() const;
- <BR/><BR/>
+ <BR/>
void str(const
basic_string<charT,traits,<u>Alloc</u>>& str);
- <BR/><BR/>
+ <BR/>
private:
- <BR/><BR/>//
+ <BR/>//
basic_stringbuf<charT, traits> sb; exposition only
- <BR/><BR/>};
- <BR/><BR/>
+ <BR/>};
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class charT, class traits, <u>Allocator
Alloc</u>>
- <BR/><BR/>
+ <BR/>
void swap(basic_stringstream<charT, traits,
<u>Alloc</u>>& x,
- <BR/><BR/>
+ <BR/>
basic_stringstream<charT, traits, <u>Alloc</u>>&
y);
- <BR/><BR/>
+ <BR/>
template <class charT, class traits, <u>Allocator</u>
<font size="2" style=
"font-size: 11pt"><u>Alloc</u>></font>
- <BR/><BR/>
+ <BR/>
void swap(basic_stringstream<charT, traits,
<u>Alloc</u>>&& x,
- <BR/><BR/>
+ <BR/>
basic_stringstream<charT, traits, <u>Alloc</u>>&
y);
- <BR/><BR/>
+ <BR/>
template <class charT, class traits, <u>Allocator</u>
<font size="2" style=
"font-size: 11pt"><u>Alloc</u>></font>
- <BR/><BR/>
+ <BR/>
void swap(basic_stringstream<charT, traits,
<u>Alloc</u>>& x,
- <BR/><BR/>
+ <BR/>
basic_stringstream<charT, traits,
<u>Alloc</u>>&& y);
- <BR/><BR/>}
+ <BR/>}
</suggestion>
<notes>
</notes>
@@ -15516,147 +15514,147 @@
Change to a style of C++.
<BR/><BR/>
Correct as follows.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
29.1
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
<u>typedef</u> enum memory_order {
- <BR/><BR/>
+ <BR/>
memory_order_relaxed, memory_order_consume,
memory_order_acquire,
- <BR/><BR/>
+ <BR/>
memory_order_release, memory_order_acq_rel,
memory_order_seq_cst
- <BR/><BR/>}
+ <BR/>}
memory_order;
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
should be
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
enum memory_order {
- <BR/><BR/>
+ <BR/>
memory_order_relaxed, memory_order_consume,
memory_order_acquire,
- <BR/><BR/>
+ <BR/>
memory_order_release, memory_order_acq_rel,
memory_order_seq_cst
- <BR/><BR/>};
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>};
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
29.3.1
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
<u>typedef</u> struct atomic_bool {
- <BR/><BR/>...
- <BR/><BR/>}
+ <BR/>...
+ <BR/>}
atomic_bool;
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
should be
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
struct atomic_bool {
- <BR/><BR/>...
- <BR/><BR/>};
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>...
+ <BR/>};
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
<u>typedef</u> struct atomic_<i>itype</i> {
- <BR/><BR/>...
- <BR/><BR/>}
+ <BR/>...
+ <BR/>}
atomic_<i>itype</i>;
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
should be
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
struct atomic_<i>itype</i> {
- <BR/><BR/>...
- <BR/><BR/>};
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>...
+ <BR/>};
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
29.3.2
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
<u>typedef</u> struct atomic_address {
- <BR/><BR/>...
- <BR/><BR/>}
+ <BR/>...
+ <BR/>}
atomic_address;
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
should be
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
struct atomic_address {
- <BR/><BR/>...
- <BR/><BR/>};
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>...
+ <BR/>};
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
29.5
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
<u>typedef</u> struct atomic_flag {
- <BR/><BR/>...
- <BR/><BR/>}
+ <BR/>...
+ <BR/>}
atomic_flag;
- <BR/><BR/>}
- <BR/><BR/>
+ <BR/>}
+ <BR/>
- <BR/><BR/>
+ <BR/>
should be
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
namespace std {
- <BR/><BR/>
+ <BR/>
struct atomic_flag {
- <BR/><BR/>...
- <BR/><BR/>};
- <BR/><BR/>}
+ <BR/>...
+ <BR/>};
+ <BR/>}
</suggestion>
<notes>Done
</notes>
@@ -16753,78 +16751,78 @@
</description>
<suggestion>
Correct as follows.
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class F>
- <BR/><BR/>
+ <BR/>
explicit packaged_task(F f);
- <BR/><BR/>
+ <BR/>
template <class F, class Allocator>
- <BR/><BR/>
+ <BR/>
explicit packaged_task(allocator_arg_t, const
Allocator& a, F f);
- <BR/><BR/>
+ <BR/>
template <class F>
- <BR/><BR/>
+ <BR/>
explicit packaged_task(F&& f);
- <BR/><BR/>
+ <BR/>
template <class F, class Allocator>
- <BR/><BR/>
+ <BR/>
explicit packaged_task(allocator_arg_t, const
Allocator& a, F&& f);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
should be
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class F>
- <BR/><BR/>
+ <BR/>
<u>requires CopyConstructible<F> &&
Callable<F, ArgTypes...></u>
- <BR/><BR/>
+ <BR/>
&& Convertible<Callable<F,
ArgTypes...>::result_type, R>
- <BR/><BR/>
+ <BR/>
explicit packaged_task(F f);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class F, <u>Allocator Alloc</u>>
- <BR/><BR/>
+ <BR/>
<u>requires CopyConstructible<F> &&
Callable<F, ArgTypes...></u>
- <BR/><BR/>
+ <BR/>
&& Convertible<Callable<F,
ArgTypes...>::result_type, R>
- <BR/><BR/>
+ <BR/>
explicit packaged_task(allocator_arg_t, const
<u>Alloc</u>& a, F f);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class F>
- <BR/><BR/>
+ <BR/>
<u>requires CopyConstructible<F> &&
Callable<F, ArgTypes...></u>
- <BR/><BR/>
+ <BR/>
&& Convertible<Callable<F,
ArgTypes...>::result_type, R>
- <BR/><BR/>
+ <BR/>
explicit packaged_task(F&& f);
- <BR/><BR/>
+ <BR/>
- <BR/><BR/>
+ <BR/>
template <class F, <u>Allocator Alloc</u>>
- <BR/><BR/>
+ <BR/>
<u>requires CopyConstructible<F> &&
Callable<F, ArgTypes...></u>
- <BR/><BR/>
+ <BR/>
&& Convertible<Callable<F,
ArgTypes...>::result_type, R>
- <BR/><BR/>explicit
+ <BR/>explicit
packaged_task(allocator_arg_t, const <u>Alloc</u>& a,
F&& f);
</suggestion>
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk