    Document number	 N3486=12-0176
    Date	         2012-11-02
    Project	         Programming Language C++
    Reference        ISO/IEC IS 14882:2011(E)
    Reply to         Stefanus Du Toit
                     Intel
                     cxxeditor@gmail.com

# C++ Editor's Report, October 2012

N3485 is the latest C++ draft specification. It applies the voted-in motions from the October 2012 meeting in Portland.

## Summary of changes

The following Core Working Group issues from N3382 were incorporated:

> 342, 631, 675, 739, 912, 1024, 1059, 1227, 1261, 1267, 1268, 1269, 1270, 1290, 1302, 1312, 1321, 1354, 1359, 1363, 1370, 1372, 1375, 1380, 1381, 1382, 1383, 1385, 1387, 1388, 1392, 1394, 1398, 1399, 1401, 1406, 1408, 1409, 1410, 1415, 1416, 1418, 1423, 1428, 1431, 1438, 1439, 1440, 1447, 1449, 1450, 1453, 1454, 1455, 1457, 1458

The proposed changes from the following Core papers were incorporated:

- N3323 A Proposal to Tweak Certain C++ Contextual Conversions, v3

The following Library Working Group issues from N3438 were incorporated:

- 2071 std::valarray move-assignment
- 2074 Off by one error in std::reverse_copy
- 2081 Allocator requirements should include CopyConstructible
- 2083 const-qualification on weak_ptr::owner_before
- 2086 Overly generic type support for math functions
- 2099 Unnecessary constraints of va_start() usage
- 2103 std::allocator_traits<std::allocator<T>>::propagate_on_container_move_assignment
- 2105 Inconsistent requirements on const_iterator's value_type
- 2110 remove can't swap but note says it might
- 2123 merge() allocator requirements for lists versus forward lists
- 2005 unordered_map::insert(T&&) protection should apply to map too
- 2011 Unexpected output required of strings
  - I refactored the wording to avoid duplication as the issue suggested could be done editorially.
- 2048 Unnecessary mem_fn overloads
- 2049 is_destructible is underspecified
- 2056 future_errc enums start with value 0 (invalid value for broken_promise)
- 2058 valarray and begin/end

The proposed changes from the following Library papers were incorporated:

- N3421 Making Operator Functors greater<>
- N3462 std::result_of and SFINAE
- N3302 Constexpr Library Additions: complex, v2
  - I added constexpr in a few inconsistently missing places between synopses and descriptions.
- N3470 Constexpr Library Additions: containers, v2
  - I added constexpr in a few inconsistently missing places between synopses and descriptions.
- N3469 Constexpr Library Additions: chrono, v3
- N3471 Constexpr Library Additions: utilities, v3

The following editorial fixes were made:

- [rand.synopsis] Fix typos "UintType" -> "UIntType". Thanks to Akira Takahashi!
- [sequence.reqmts] and [forwardlist.modifiers]: Fix occurrences of "i1" that are supposed to be "il". Thanks to Jeffrey Yasskin!
- fixed typo
- [thread.condition.condvar] Consistently use system_error instead of std::system_error. Thanks to Masayoshi Kanke!
- [meta.rel] Fix a Clause reference. Thanks to Masayoshi Kanke!
- Fix a few more Clause references.
- [dcl.fct] Add missing semicolon to declaration statement in p12. Thanks to Masayoshi Kanke!
- [dcl.type] Refer to a clause with "Clause". Thanks to Masayoshi Kanke!
- [basic.type.qualifier] Reference correct section for alignment requirements. Thanks to Masayoshi Kanke!
- [basic.link] Fix reference to clause to include "Clause". Thanks to Masayoshi Kanke!
- [basic.lookup.elab] Fix indentation of comment. Thanks to Masayoshi Kanke!
- [basic.scope.local] Rename to [basic.scope.block] to match new title. Thanks to Masayoshi Kanke!
- Fix >> appearing as guillemets in inline code in a bunch of places.
- [basic.fundamental] Reference <cstdint> instead of <stdint.h> when talking about uint_least16_t and uint_least32_t. Thanks to Peter Sommerlad!
- [diff.library] Fix typo USRT_MAX -> USHRT_MAX. Thanks to Kevin McCarty!
- Index: fix location of <scoped_allocator> entry in index.
- [stream.iterators] Replace reference to non-existent "partial_sum_copy" with "partial_sum" in example. Thanks to Peter Sommerlad!
- Remove a bunch of "is guaranteed" and "encouraged, but not required" and replace them with "shall" and "should".
- [intro.multithread] Clarify read-write coherence to make it clear the the operation "B" modifies M. Thanks to Daniel Krügler!
- [conversions] Fix formatting issues, extraneous template arguments to the class Codecvt, reference to codecvt_utf8 as a user type (when it's in fact a standard type) in non-normative note and typedef descriptions to match synopsis. Thanks to Jonathan Wakely!
- index: fix duplicate entry for numeric_limits, and make specific entry more specific. Thanks to Pete Becker!
- [basic.fundamental] Use "signed and unsigned integer types" instead of "signed and unsigned integral types" to be consistent with the preceding sentence. Thanks to Thomas Plum and Mike Miller!
- [dcl.fct.def.general] fix extraneous space in __func__ definition ('"function-name "' -> '"function-name"') and elsewhere. This fixes all instances of \term{} and \grammarterm{} used in code blocks to not insert spaces afterwards. I fixed the one instance where a space was required and not already explicitly present, and checked all the rest to ensure they are as they were before or better. Many (mostly harmless but ugly) extraneous spaces in code blocks containing italicized terms are now gone.
- [tuple] and [tuple.rel] Replace all uses of "iff", either with proper grammar in tuple.rel or with "only if" in comments pertaining to members that only exist under some conditions. There are no other uses of "iff" in the standard. Thanks to Jonathan Wakely for the [tuple.rel] part!
- [locale.cons] Move description of the copy assignment operator for locale to the right place. Thanks to Bo Persson and Daniel Krügler!
- [locale.codecvt] Fix "The stateT object" -> "Objects of type stateT" (stateT is a type, not an object). Thanks to Beman Dawes!
- [tuple.rel] fix sizeof...(Types) -> sizeof(TTypes) in two places. Thanks to Andrew Koenig!
- [ostream.rvalue] and [rand.eng.mers]: fix "<<" in inline code showing up as French double quotes instead of "<<". Thanks to Peter Sommerlad!
- [thread.condition.condvar] Replace references to timed_wait. Thanks to Jonathan Wakely!
- [streambuf] Fix typo and typeface in [streambuf.virt.pback], add missing itemdescr commands in [streambuf.virt.put]. Thanks to Jonathan Wakely!
- [time] formatting fixes. Thanks to Jonathan Wakely!
- [expr.log.and] Remove redundant word "type" from "contextually converted to type bool". Thanks to Stephan T. Lavavej!
- [expr.static.cast]/2 Fix "result of the cast is undefined" -> "behavior is undefined". Thanks to Richard Smith.
- [temp.deduct.partial] Fix "conversion operator" -> "conversion function". Thanks to Mike Miller.
- [temp.param] Add missing "struct" in example in last paragraph. Thanks to Mike Miller!
- [temp.param] Fix typo in comment for example in paragraph 11. Thanks to Mike Miller!
- [over.literal] Fix return type for pi (it's not an integer) in example and add leading underscore. Thanks to Mike Miller!
- [over.ics.list] Fix typo "C"->"D" in constructor name in example. Thanks to Mike Miller.
- [class.inhctor] Italicize "using-declaration" in paragraph 3. Thanks to Mike Miller!
- [dcl.init.list] Use code font for initializer_list<int> in comment. Thanks to Mike Miller.
- [dcl.init.list] Mention that list-initialization can be used as a for-range-initializer in the non-normative note. Thanks to Mike Miller.
- [dcl.attr.grammar] Fix typo of "alignment-expression" -> "assignment-expression". Thanks to Mike Miller.
- [namespace.memdef] Fix "defined" -> "declared" in paragraph 3 code example. Thanks to Mike Miller.
- [dcl.dcl]/3 Don't italicize the trailing "s" in "class-names", "enum-names", or "enumerators". Thanks to Mike Miller.
- [stmt.for] Fix capitalization of "clause". Thanks to Mike Miller.
- [expr.cond] Fix indentation of text at the end of /3 that was meant to apply to the paragraph, not the third item of the contained bullet. Thanks to Mike Miller!
- [basic.stc.dynamic.allocation] Use the term "exception object" instead of long description of the same thing. Thanks to Mike Miller.
- [basic.scope.class] Fix grammar issues in last bullet of paragraph 1. Thanks to Mike Miller.
- [lex.name] Fix capitalization. Thanks to Mike Miller.
- [reverse.iterator] and [reverse.iter.opdiff]: Fix return type of operator-() to not use protected member in decltype(). Thanks to Daniel Krügler!
- [re.alg.replace] Remove stray paragraph separator before last sentence of paragraph 1. Thanks to Pete Becker!
- [locale.syn] Add missing declaration for isblank() to the synopsis. Thanks to Daniel Krügler!
- [allocator.adaptor.syn] Add missing ... to parameter for scoped_allocator_adaptor. Thanks to Alisdair Meredith!
- [tuple] Change "class... types" to "class... Types" to be consistent with usage of the parameter. Thanks to Christof Meerwald!
- [re.results] Add missing > to match_results declaration. Thanks to Pete Becker!
- [stack.cons] Fix typo in constructor parameter name Fix parameter that should have been "cont" instead of "const". Thanks to Daniel Krügler!
- [locale.syn] Removed extra ">"s from synopsis. Thanks to Mitsuru Kariya!
- fix minor typo
- [atomics.types.operations.req] "free functions" to "non member functions" - Thanks Akira!
- s/free functions/non member functions/
- [time] formatting fixes
- [streambuf.virt.put] add missing itemdescr commands
- [streambuf.virt.pback] Fix typo and typeface
- [thread.condition.condvar] Replace references to timed_wait
- [conversions.buffer] Fix indentation.
- [conversions.string] Fix typedef definitions.
- [conversions.string] codecvt_utf8 is standard.
- [conversions.buffer] Codecvt is not a template.
- [conversions.string] Codecvt is not a template.
- [conversions.string] use fixed-width typeface.
- [re.matchflag] escape "\b" properly in description Thanks to Andy Koenig!
- Simple syntax fixes. Thanks to Github user Eelis! [dcl.link] Remove stray curly bracket in example. [ostream.inserters.arithmetic] Fix typo in code fragment. [ostream.inserters.character] Fix wrong bracket type in declaration. [sequences.general] Add missing curly bracket to close namespace std
- [sequences.general] Add missing curly bracket to close namespace std in vector synopsis.
- [ostream.inserters.character] Fix wrong bracket type in declaration.
- [ostream.inserters.arithmetic] Fix typo in code fragment.
- [dcl.link] Remove stray curly bracket in example.
- [re.alg.replace] Remove stray curly bracket in a declaration. Thanks to github user Eelis!
- [string.cons] Remove redundant template argument lists. Thanks to Jonathan Wakely!
- Restore definition of literal type. This was a passed-on editorial change in the first post-C++11 draft that turned out not to be editorial. Thanks to Richard Smith!
- [expr.prim.lambda] Fix missing semi-colon in example. - Thanks Jonathan Wakely!
- [container.requirements.general] Fix typeface around X. Thanks to Jonathan Wakely!
- [string.cons] Remove 'const' from rvalue parameter in table 71 caption. Thanks to Jonathan Wakely!
- Fix typeface in [pairs.pair]/20. Thanks Jonathan Wakely!
- [storage.iterator] Remove redundant template argument lists. Thanks Jonathan Wakely!
- Add cross-references for iterator categories. Fix typeface and capitalization. Thanks Jonathan Wakely!

## Miscellaneous

Thanks to Mike Miller and Alisdair Meredith for their review comments.

If you would like to report an issue, please follow these instructions.