This paper presents the set of changes applied to the 2003 C++ Standard (TC1) to produce CD1 for the pending C++0x standard. Major features and fixes are introduced via formal papers, collected by topic in the table below. Smaller fixes are handled via separate issues processing lists for Core and Library working groups, summarized in their respective tables below.
The starting point for this work is the 2003 C++ Standard with TC1 applied, and the first library Technical Report. The ealiest draught in the current format is available online as N1577.
Papers have been grouped in a self-selecting manner as either new components or updates. Proposals for new components have a series of papers describing thier evolution, and only the right-most paper is relevant (and the one applied to the working paper by committee vote.) The 'update' papers are grouped according to the feature they are updating, and mostly apply updates to the component papers after acceptance into the working paper.
WG21 Number(s) | Title | Authors |
Memory model and concurrency | ||
These papers deal with specifying the memory model for C++0x, and providing additional features, both in the language and the library, to support development of programs with some form of concurrency. | ||
N2239 | A finer-grained alternative to sequence points | Clark Nelson |
N2429 | Sequencing and the concurrency memory model | Clark Nelson, Hans Boehm |
N2670 | Minimal Support for Garbage Collection and Reachability-Based Leak Detection | H.-J. Boehm, M. Spertus, C.Nelson |
N2664 | C++ Data-Dependency Ordering: Atomics and Memory Model | P. McKenney, H.-J. Boehm, L. Crowl |
N2782 | C++ Data-Dependency Ordering: Function Annotation | Paul E. McKenney, L. Crowl |
N2427 | Atomic operations with multi-threaded environments | Hans Boehm, Lawrence Crowl |
N2514 | Implicit Conversion Operators for Atomics | Lawrence Crowl |
N2547 | Allow atomics use in signal handlers | Hans-J. Boehm |
N2752 | Improved support for bidirectional fences | Peter Dimov |
N2748 | Strong Compare and Exchange | Lawrence Crowl |
N2659 | Thread-Local Storage | Lawrence Crowl |
N2670 | Dynamic initialization and concurrency | Lawrence Crowl |
N2669 | Thread-Safety in the Standard Library | B. Dawes, P. Dimov, H. Sutter |
N2775 | Small library thread-safety revisions | Hans Boehm |
N2668 | Concurrency Modifications to basic_string |
A. Meredith, H. Boehm, L. Crowl, P. Dimov, D. Krügler |
N2760 | Input/Output Library Thread Safety | Beman Dawes |
N2497 | A Multi-threading Library for Standard C++ | H. Hinnant, B. Dawes, L. Crowl, J. Garland, A. Williams et al. |
N2549 | Excision of Clause 31 | Thomas Plum |
N2661 | A Foundation to Sleep On | Howard E. Hinnant, Walter E. Brown, Jeff Garland Marc Paterno |
N2678 | Error Handling Specification for Chapter 30 (Threads) | J. Garland, N. Stoughton, B. Kosnik, B. Dawes |
N2179 | Language Support for Transporting Exceptions between Threads | Peter Dimov |
N2671 | An Asynchronous Return Buffer | D. Vollmann, H. Hinnant, A. Williams |
N2709 | Packaging Tasks for Asynchronous Execution | Anthony Williams |
N2440 | Abandoning a Process | Lawrence Crowl |
Rvalue references | ||
These papers deal with specifying a major new language feature that enables 'move semantics' for value types, and perfect forwarding of function arguments without an exponential combination of function overloads. The library is updated to take advantage of this feature. | ||
N2118 | A Proposal to Add an Rvalue Reference to the C++ Language | H. Hinnant, P. Dimov, D. Abrahams, J. Adamczyk, A. Hommel |
N1610 | Clarification of Initialization of Class Objects by rvalues | D. Abrahams, G. Powell |
N2439 | Extending Move Semantics To *this (Revision 2) | Bronek Kozicki |
N1856 | Rvalue Reference Recommendations for Chapter 20 | Howard E. Hinnant |
N2244 | Perfect forwarding for make_pair and make_tuple |
Thorsten Ottosen |
N1857 | Rvalue Reference Recommendations for Chapter 21 | Howard E. Hinnant |
N1858 | Rvalue Reference Recommendations for Chapter 23 | Howard E. Hinnant |
N1859 | Rvalue Reference Recommendations for Chapter 24 | Howard E. Hinnant |
N1860 | Rvalue Reference Recommendations for Chapter 25 | Howard E. Hinnant |
N1861 | Rvalue Reference Recommendations for Chapter 26 | Howard E. Hinnant |
N1862 | Rvalue Reference Recommendations for Chapter 27 | Howard E. Hinnant |
Concepts | ||
These papers deal with specifying a major new language feature to constrain templates, and update the many parts of the library to take advantage of this feature. | ||
N2773 | Concepts (unified proposal) | D. Gregor, B. Stroustrup, J. Siek, J. Widman |
N2782 | Named Requirements for C++0X Concepts | W Brown, J Widman, C Jefferson, A Meredith |
N2755 | Concepts for the C++0x Standard Library: Introduction | B. Dawes, D. Gregor, J. Willcock, A. Lumsdaine |
N2774 | Foundation Concepts for the C++0x Standard Library | D. Gregor, A. Lumsdaine |
N2777 | Concepts for the C++0x Standard Library: Iterators | D. Gregor, J. Willcock, A. Lumsdaine, J. Siek |
N2779 | Concepts for clause 18 (Part 2) | Alisdair Meredith |
N2620 | Concepts for the C++0x Standard Library: Diagnostics library | B. Dawes, D. Krügler, D. Gregor |
N2768 | Allocator Concepts | Pablo Halpern |
N2770 | Concepts for the C++0x Standard Library: Utilities | D. Gregor, J. Willcock, A. Lumsdaine |
N2776 | Concepts for the C++0x Standard Library: Containers | D. Gregor, M. Marcus, P. Halpern |
N2758 | Iterator Concepts for the C++0x Standard Library | D. Gregor, J. Willcock, A. Lumsdaine, J. Siek |
N2759 | Concepts for the C++0x Standard Library: Algorithms | D. Gregor, M. Marcus, T. Witt, J. Willcock, A. Lumsdaine |
N2786 | Simplifying unique copy | Douglas Gregor |
N2736 | Concepts for the C++0x Standard Library: Numerics 26.6 only | D. Gregor, J. Willcock, A. Lumsdaine |
Templates | ||
These papers deal with improvements to the template facility. | ||
N2258 | Template aliases for C++ | B. Stroustrup, G. Dos Reis, Mat Marcus, Walter E. Brown,Herb Sutter |
N2657 | Making Local Classes more Useful | Anthony Williams; John Spicer |
N1987 | Extern template | Matt Marcus, Garbriel Dos Reis, John Spicer |
N2242 | Variadic Templates | D. Gregor, J. Järvi, G. Powell |
N2555 | Extending Variadic Template Template Parameters | D. Gregor, E. Niebler |
N2192 | Variadic Templates for the C++0x Standard Library | D. Gregor, J. Järvi |
N1791 | Extended friend Declarations | William M. Miller |
N1757 | Right Angle Brackets | Daveed Vandevoorde |
N2634 | Solving the SFINAE problem for expressions | J Spicer, S Adamczyk |
Initialization | ||
These papers deal with improvements to initialization syntax and semantics. | ||
N2672 | Initializer lists | Bjarne Stroustrup, G. Dos Reis, J. S. Adamczyk |
N2679 | Initializer Lists for Standard Containers | G. Dos Reis, B. Stroustrup |
N1984 | Deducing the type of variable from its initializer expression | J. Jaarvi, B. Stroustrup, G. Dos Reis |
N2546 | The Syntax of auto Declarations | Daveed Vandevoorde |
N1986 | Delegating Constructors | H. Sutter, F. Glassborow |
N2540 | Inheriting Constructors | M. Wong, A. Meredith, J. Maurer |
N2756 | Member Initializers | M Spertus, Bill Seymour |
New and Enhanced Data Types | ||
These papers introduce new data types into the language, or enhance the properties of existing data types. | ||
N1811 | Adding the long long type to C++ | J. Stephen Adamczyk |
N1988 | Adding extended integer types to C++ | J. Stephen Adamczyk |
N2114 | long long Goes to the Library | Robert Klarer |
N2249 | New Character Types in C++ | Lawrence Crowl |
N2170 | Universal Character Names in Literals | Lawrence Crowl |
N2442 | Raw String Literals and UTF8 literals | Beman Dawes, Lawrence Crowl |
N2238 | Minimal Unicode support for the standard library | Matthew Austern |
N2342 | PODs unstrung | Beman Dawes |
N2762 | Not so Trivial Issues with Trivial | L. Crowl, J. Maurer |
N2347 | Strongly Typed Enums | H. Sutter, D. Miller, B. Stroustrup |
N2764 | Forward declaration of enumerations | Alberto Ganesh Barbati |
N2431 | A name for the null pointer: nullptr | H. Sutter, B. Stroustrup |
N2656 | Core issue 654: Convertibility of 0-literal | H. Sutter, B. Stroustrup |
N2544 | Unrestricted Unions | L. Goldthwaite, A. Talbot, L. Crowl, J. Maurer |
Additional Language Facilities | ||
These papers introduce more new language facilities, but do not have an connecting theme. | ||
N1653 | Synchronizing the C++ preprocessor with C99 | Clark Nelson, Paul Mensonides |
N1627 | "Conditionally-Supported Behavior" | William M. Miller |
N1727 | Changing Undefined Behavior into Diagnosable Errors | William M. Miller |
N1720 | static_assert | R. Klarer, J. Maddock, B. Dawes, H. Hinnant |
N2235 | Generalized Constant Expressions | Gabriel Dos Reis |
N2349 | Constant Expressions in the Standard Library | G. Dos Reis, B. Stroustrup |
N2253 | Extending sizeof | Jens Maurer |
N2340 | Proposed addition of __func__ predefined identifier from C99 | Alisdair Meredith, J Maurer |
N2341 | Adding Alignment Support to the C++ Programming Language | Attila (Farkas) Fehér, C. Nelson |
N2761 | General Attributes for C++ | Michael Wong, Jens Maurer |
N2343 | Decltype | J. Järvi, B. Stroustrup, D. Gregor, J. Siek, G. Dos Reis |
N2194 | decltype for the C++0x Standard Library | D. Gregor, J. Järvi |
N2346 | Defaulted and Deleted Functions | Lawrence Crowl |
N2292 | Standard Library Applications for Deleted Functions | Alisdair Meredith |
N2437 | Explicit Conversion Operators | Lois Goldthwaite, Michael Wong, J Maurer, A Meredith |
N2434 | Standard Library Applications for Explicit Conversion Operators | Alisdair Meredith |
N2435 | Standard Library Applications for Explicit Conversion Operators (to smart pointers) | Alisdair Meredith |
N2535 | Namespace Association ("Strong Using") | Benjamin Kosnik, Jason Merril |
N2541 | New function declaration syntax for deduced return types | Jason Merrill (wording proposal by J. Järvi, B. Stroustrup, D. Gregor, J. Siek, G. Dos Reis) |
N2550 | (monomorphic) Lambda expressions and closures for C++ | J Willcock, J Järvi, D Gregor, A Lumsdaine, J. Freeman, L. Crowl |
N2658 | Constness of lambda functions | J Järvi, P Dimov, J Freeman |
N2765 | Extensible Literals | I. McIntosh, M. Wong, R. Mak, R.Klarer Bjarne Stroustrup |
N2778 | Proposal for new for-loop | Thorsten Ottosen, Doug Gregor |
New Library Components | ||
Several of the new library components were introduced via TR1 and so are listed against paper N1836 which is the final public draught of Library Technical Report 1. Papers are ordered and grouped by chapter where possible. | ||
N2241 | Diagnostics Enhancements for C++0x | Beman Dawes |
N2422 | Diagnostics Enhancements; Resolution of Small Issues | B. Dawes, B. Kosnik, C. Kohlhoff |
N1836 | tuple type for the standard library | Jaakko Järvi |
N2299 | Concatenating tuples | Joe Gottman |
N1836 | A Proposal to add Type Traits to the Standard Library | John Maddock |
N2255 | Minor Modifications to the type traits Wording | Howard E. Hinnant |
N2240 | Two missing traits: enable_if and conditional | Benjamin Kosnik |
N2244 | Yet another type-trait: decay | Thorsten Ottosen |
N1836 | Polymorphic Function Object Wrapper for the Standard Library | Doug Gregor |
N2308 | Adding allocator support to std::function for C++0x | Emil Dotchevski |
N1836 | General Purpose Smart Pointers | P. Dimov, B. Dawes, G. Colvin |
N2351 | Improving shared_ptr for C++0x |
P. Dimov, B. Dawes |
N2674 | Atomic access to shared_ptr |
P. Dimov, B. Dawes |
N2637 | Revisiting std::shared_ptr comparison | Hervé Brönnimann |
N1836 | A Fixed Size Array Wrapper for the Standard Library | Alisdair Meredith |
N2543 | STL singly linked lists | Matt Austern |
N1836 | A Proposal to Add Hashtables to the Standard Library | Matt Austern |
N2666 | More STL algorithms | Matt Austern |
N2111 | Random Number Generation in C++0x: A Comprehensive Proposal | M. Paterno, M. Fischler, W. Brown, J. Kowalkowski |
N2478 | A Proposal to Add typedef default_random_engine to C++0X | Walter E. Brown |
N1836 | Regular Expression for the Standard Library | John Maddock |
Enhancements to Existing Library | ||
These propsals enhance or resolve issues with library components present in the original standard. Papers are ordered and grouped by chapter where possible. | ||
N2667 | Reserved namespaces for POSIX | Bejnamin Kosnik |
N2530 | Making It Easier to Use std::type_info as an Index in an Associative Container |
James Kanze |
N2559 | Nesting Exception Objects | Alisdair Meredith |
N2005 | A maximum significant decimal digits value for numeric_limits |
Paul A Bristow |
N2348 | A proposal to extend numeric_limits for consistent range query |
Fernando Cacciola, Marc Paterno |
N1836 | A uniform method for computing function object return types | Douglas Gregor |
N1836 | reference wrapper | Doug Gregor, Peter Dimov |
N1836 | Enhanced Binders | P. Dimov, D. Gregor, J. Järvi, G. Powell |
N1836 | Enhanced Member Pointer Adaptor | Peter Dimov |
N2436 | Small Allocator Fix-ups | Pablo Halpern |
N2554 | A Scoped Allocator Model | Pablo Halpern |
N2525 | Allocator-specific swap and move behaviour | Pablo Halpern |
N1981 | Uniform Use of std::string |
Pete Becker |
N2408 | Simple Numeric Access | Pete Becker |
N2007 | Proposed Library Additions for Code Conversions | P.J. Plauger |
N2401 | Code Conversion Facets for the Standard C++ Library | P.J. Plauger |
N2321 | Enhancing the time_get facet for POSIX® compatibility |
Martin Sebor |
N1913 | A Proposal to Improve const_iterator Use from C++0x Containers | Walter E. Brown |
N2345 | Placement Insert for Containers | Alan Talbot |
N2680 | Proposed Wording for Placement Insert | Alan Talbot |
N2350 | Container insert/erase and iterator constness | Matthew Austern, Alan Talbot |
N2353 | Specification for vector<bool> |
Alisdair Meredith |
N1990 | Function template std::minmax and / or algorithm
std::minmax_element |
Hervé Brönnimann ; Howard E. Hinnant |
N2551 | A variadic std::min(T, ...) for the C++ Standard Library |
Sylvain Pion |
N2772 | Variadic functions: Variadic templates or initializer lists? | Loïc Joly |
N2246 | 2 crazy ideas for the standard library | Thorsten Ottosen |
N1836 | Proposed C99 Library Additions to C++ | P.J. Plauger |
N2259 | Specify header dependency for <iostream> | Howard E. Hinnant |
N2071 | Iostream manipulators for convenient extraction and insertion of struct tm objects | Martin Sebor |
N2072 | Iostream manipulators for convenient extraction and insertion of monetary values | Martin Sebor |
N1991 | Proposed Text for defaultfloat |
Paul A Bristow ; Howard E. Hinnant |
N2769 | Detailed Reporting for Input/Output Library Errors | Beman Dawes |
Accelerated Issue Resolution | ||
These papers were used as a means to resolve issues already tracked through the issues lists when their status was not 'Ready' coming into a meeting. | ||
N2183 | LWG Issues From Batavia | Howard E. Hinnant |
N2757 | Expedited core issues handling | Jens Maurer |
N2771 | LWG Issues (San Francisco) | Howard E. Hinnant |
N2783 | Collected issues with Atomics | Lawrence Crowl |
The following table list all issues resolved via the Core Working Group issues list and incorporated into CD1.
Issue | Section | Title |
4 | 7.5 | Does extern "C" affect the linkage of function names with internal linkage? |
5 | 8.5 | CV-qualifiers and type conversions |
8 | 11 | Access to template arguments used in a function return type and in the nested name specifier |
9 | 11.2 | Clarification of access to base class members |
10 | 11.8 | Can a nested class access its own class name as a qualified name if it is a private member of the enclosing class? |
11 | 7.3.3 | How do the keywords typename/template interact with using-declarations? |
16 | 11.2 | Access to members of indirect private base classes |
28 | 3.6.3 | 'exit', 'signal' and static object destruction |
29 | 7.5 | Linkage of locally declared functions |
39 | 10.2 | Conflicting ambiguity rules |
44 | 14.7.3 | Member specializations |
45 | 11.8 | Access to nested classes |
54 | 5.2.9 | Static_cast from private base to derived class |
58 | 9.6 | Signedness of bit fields of enum type |
60 | 13.3.3.1.4 | Reference binding and valid conversion sequences |
62 | 14.3.1 | Unnamed members of classes used as type parameters |
63 | 14.7.1 | Class instantiation from pointer conversion to void*, null and self |
70 | 14.8.2.5 | Is an array bound a nondeduced context? |
77 | 11.4 | The definition of friend does not allow nested classes to be friends |
78 | 8.5 | Section 8.5 paragraph 9 should state it only applies to non-static objects |
86 | 12.2 | Lifetime of temporaries in query expressions |
87 | 15.4 | Exception specifications on function parameters |
106 | unknown | Creating references to references during template deduction/instantiation |
112 | 8.3.4 | Array types and cv-qualifiers |
113 | 5.2.2 | Visibility of called function |
115 | 13.4 | Address of template-id |
118 | 5.2.2 | Calls via pointers to virtual member functions |
119 | 3.8 | Object lifetime and aggregate initialization |
122 | 5.1 | template-ids as unqualified-ids |
124 | 12.2 | Lifetime of temporaries in default initialization of class arrays |
125 | 5.1 | Ambiguity in friend declaration syntax |
136 | 8.3.6 | Default arguments and friend declarations |
139 | 3.4.1 | Error in friend lookup example |
140 | 8.3.5 | Agreement of parameter declarations |
141 | 3.4.5 | Non-member function templates in member access expressions |
143 | 3.4.2 | Friends and Koenig lookup |
158 | 3.10 | Aliasing and qualification conversions |
160 | 8.2 | Missing std:: qualification |
162 | 13.3.1.1 | (&C::f)() with nonstatic members |
172 | 7.2 | Unsigned int as underlying type of enum |
175 | 9 | Class name injection and base name access |
177 | 8.5 | Lvalues vs rvalues in copy-initialization |
180 | 14.6 | typename and elaborated types |
184 | 14.1 | Default arguments in template template-parameters |
195 | 5.2.10 | Converting between function and object pointers |
197 | 14.6.4.2 | Issues with two-stage lookup of dependent names |
198 | 9.8 | Definition of "use" in local and nested classes |
199 | 12.2 | Order of destruction of temporaries |
201 | 12.2 | Order of destruction of temporaries in initializers |
204 | 14 | Exported class templates |
207 | 11.2 | using-declarations and protected access |
208 | 15.1 | Rethrowing exceptions in nested handlers |
214 | 14.5.6.2 | Partial ordering of function templates is underspecified |
215 | 14.1 | Template parameters are not allowed in nested-name-specifiers |
216 | 3.5 | Linkage of nameless class-scope enumeration types |
218 | 3.4.2 | Specification of Koenig lookup |
220 | 3.7.3.2 | All deallocation functions should be required not to throw |
221 | 13.5.3 | Must compound assignment operators be member functions? |
222 | 5 | Sequence points and lvalue-returning operators |
224 | 14.6.2.1 | Definition of dependent names |
226 | 14.1 | Default template arguments for function templates |
228 | 14.2 | Use of template keyword with non-member templates |
237 | 14.7.2 | Explicit instantiation and base class members |
239 | 13.3.1.1.1 | Footnote 116 and Koenig lookup |
244 | 12.4 | Destructor lookup |
245 | 3.4.4 | Name lookup in elaborated-type-specifiers |
246 | 14.3 | Jumps in function-try-block handlers |
252 | 12.4 | Looking up deallocation functions in virtual destructors |
254 | 3.4.4 | Definitional problems with elaborated-type-specifiers |
256 | 5.3.4 | Overflow in size calculations |
258 | 7.3.3 | using-declarations and cv-qualifiers |
259 | 14.7 | Restrictions on explicit specialization and instantiation |
261 | 3.2 | When is a deallocation function "used?" |
262 | 8.3.5 | Default arguments and ellipsis |
263 | 12.1 | Can a constructor be declared a friend? |
270 | 3.6.2 | Order of initialization of static data members of class templates |
272 | 12.4 | Explicit destructor invocation and qualified-ids |
273 | 9 | POD classes and operator&() |
274 | 3.8 | Cv-qualification and char-alias access to out-of-lifetime objects |
275 | 14.7.3 | Explicit instantiation/specialization and using-directives |
276 | 6.6 | Order of destruction of parameters and temporaries |
277 | 8.5 | Zero-initialization of pointers |
280 | 13.3.1.1.2 | Access and surrogate call functions |
281 | 7.1.2 | inline specifier in friend declarations |
283 | 7.1.6.2 | Template type-parameters are not syntactically type-names |
284 | 9 | qualified-ids in class declarations |
286 | 14.5.5 | Incorrect example in partial specialization |
288 | 5.3.5 | Misuse of "static type" in describing pointers |
289 | 3.2 | Incomplete list of contexts requiring a complete type |
291 | 8.5.3 | Overload resolution needed when binding reference to class rvalue |
295 | 8.3.5 | cv-qualifiers on function types |
296 | 12.3.2 | Can conversion functions be static? |
298 | 3.4.3.1 | T::x when T is cv-qualified |
299 | 5.3.4 | Conversion on array bound expression in new |
300 | 14.8.2.5 | References to functions in template argument deduction |
301 | 14.2 | Syntax for template-name |
302 | 8.5 | Value-initialization and generation of default constructor |
305 | 3.4.5 | Name lookup in destructor call |
306 | 10.2 | Ambiguity by class name injection |
309 | 3 | Linkage of entities whose names are not simply identifiers, in introduction |
317 | 7.1.2 | Can a function be declared inline after it has been called? |
318 | 3.4.3.1 | struct A::A should not name the constructor of A |
319 | 3.5 | Use of names without linkage in declaring entities with linkage |
320 | 12.2 | Question on copy constructor elision example |
322 | 14.8.2.3 | Deduction of reference conversions |
323 | 14 | Where must export appear? |
324 | 5.3.1 | Can "&" be applied to assignment to bit-field? |
326 | 12.1 | Wording for definition of trivial constructor |
327 | 9 | Use of "structure" without definition |
328 | 9.2 | Missing requirement that class member types be complete |
329 | 14.5.4 | Evaluation of friends of templates |
331 | 12.1 | Allowed copy constructor signatures |
335 | 14 | Allowing export on template members of nontemplate classes |
336 | 14.7.3 | Explicit specialization examples are still incorrect |
337 | 14.8.2 | Attempt to create array of abtract type should cause deduction to fail |
339 | 5.19 | Overload resolution in operand of sizeof in constant expression |
345 | 14.6 | Misleading comment on example in templates chapter |
348 | 3.7.3.2 | delete and user-written deallocation functions |
349 | 14.8.2.3 | Template argument deduction for conversion functions and qualification conversions |
351 | 5 | Sequence point error: unspecified or undefined? |
352 | 14.8.2.1 | Nondeduced contexts |
353 | 5.3.5 | Is deallocation routine called if destructor throws exception in delete? |
354 | 14.3.2 | Null as nontype template argument |
357 | 1.3 | Definition of signature should include name |
362 | 2.1 | Order of initialization in instantiation units |
364 | 13.3.1.1.1 | Calling overloaded function with static in set, with no object |
366 | 5.19 | String literal allowed in integral constant expression? |
367 | 5.19 | throw operator allowed in constant expression? |
368 | 14.8.2 | Uses of non-type parameters that should cause deduction to fail |
370 | 16.2 | Can #include <...> form be used other than for standard C++ headers? |
372 | 14.3 | Is access granted by base class specifiers available in following base class specifiers? |
377 | 7.2 | Enum whose enumerators will not fit in any integral type |
379 | 9 | Change "class declaration" to "class definition" |
381 | 3.4.5 | Incorrect example of base class member lookup |
382 | 14.6 | Allow typename outside of templates |
383 | 9 | Is a class with a declared but not defined destructor a POD? |
385 | 11.5 | How does protected member check of 11.5 interact with using-declarations? |
387 | 14.6.5 | Errors in example in 14.6.5 |
389 | 3.5 | Unnamed types in entities with linkage |
390 | 10.4 | Pure virtual must be defined when implicitly called |
391 | 8.5.3 | Require direct binding of short-lived references to rvalues |
392 | 12.2 | Use of full expression lvalue before temporary destruction |
394 | 16 | identifier-list is never defined |
396 | 7.1.2 | Misleading note regarding use of auto for disambiguation |
397 | 7.1.2 | Same address for string literals from default arguments in inline functions? |
398 | 14.8.2 | Ambiguous wording on naming a type in deduction |
400 | 3.4.3.2 | Using-declarations and the "struct hack" |
401 | 14.1 | When is access for template parameter default arguments checked? |
403 | 3.4.2 | Reference to a type as a template-id |
404 | 3.8 | Unclear reference to construction with non-trivial constructor |
406 | 9.4.2 | Static data member in class with name for linkage purposes |
409 | 14.6 | Obsolete paragraph missed by changes for issue 224 |
410 | 14.5.4 | Paragraph missed in changes for issue 166 |
413 | 9 | Definition of "empty class" |
414 | 3.4.5 | Multiple types found on destructor lookup |
415 | 14.8.3 | Template deduction does not cause instantiation |
416 | 13.3.1.2 | Class must be complete to allow operator lookup? |
417 | 9.1 | Using derived-class qualified name in out-of-class nested class definition |
420 | 13.5.6 | postfixexpression->scalar_type_dtor() inconsistent |
421 | 5.2.5 | Is rvalue.field an rvalue? |
424 | 7.1.3 | Wording problem with issue 56 resolution on redeclaring typedefs in class scope |
425 | 13.6 | Set of candidates for overloaded built-in operator with float operand |
427 | 5.2.9 | static_cast ambiguity: conversion versus cast to derived |
428 | 15.1 | Mention of expression with reference type |
429 | 5.3.4 | Matching deallocation function chosen based on syntax or signature? |
430 | 8.5.1 | Ordering of expression evaluation in initializer list |
432 | 3.3.6 | Is injected class name visible in base class specifier list? |
433 | 3.3.1 | Do elaborated type specifiers in templates inject into enclosing namespace scope? |
436 | 9.6 | Problem in example in 9.6 paragraph 4 |
437 | 9.2 | Is type of class allowed in member function exception specification? |
439 | 5.2.9 | Guarantees on casting pointer back to cv-qualified version of original type |
441 | 3.6.2 | Ordering of static reference initialization |
442 | 5.3.5 | Incorrect use of null pointer constant in description of delete operator |
443 | 12.2 | Wording nit in description of lifetime of temporaries |
446 | 5.16 | Does an lvalue-to-rvalue conversion on the "?" operator produce a temporary? |
447 | 14.6.2.3 | Is offsetof type-dependent? |
450 | 8.5.3 | Binding a reference to const to a cv-qualified array rvalue |
451 | 5 | Expressions with invalid results and ill-formedness |
452 | 9.3.2 | Wording nit on description of this |
454 | 9.4.2 | When is a definition of a static data member required? |
457 | 5.19 | Wording nit on use of const variables in constant expressions |
460 | 7.3.3 | Can a using-declaration name a namespace? |
463 | 5.2.10 | reinterpret_cast<T*>(0) |
464 | 12.2 | Wording nit on lifetime of temporaries to which references are bound |
466 | 5.2.4 | cv-qualifiers on pseudo-destructor type |
468 | 14.2 | Allow ::template outside of templates |
470 | 14.7.2 | Instantiation of members of an explicitly-instantiated class template |
474 | 3.5 | Block-scope extern declarations in namespace members |
477 | 7.1.2 | Can virtual appear in a friend declaration? |
479 | 15.1 | Copy elision in exception handling |
480 | 4.11 | Is a base of a virtual base also virtual? |
484 | 10 | Can a base-specifier name a cv-qualified class type? |
485 | 3 | What is a “name”? |
486 | 14.8.2 | Invalid return types and template argument deduction |
488 | 14.8.2 | Local types, overload resolution, and template argument deduction |
491 | 8.5.1 | Initializers for empty-class aggregrate members |
492 | 5.2.8 | typeid constness inconsistent with example |
494 | 11 | Problems with the resolution of issue 45 |
497 | 5.5 | Missing required initialization in example |
500 | 11.4 | Access in base-specifiers of friend and nested classes |
505 | 2.13.2 | Conditionally-supported behavior for unknown character escapes |
506 | 5.2.2 | Conditionally-supported behavior for non-POD objects passed to ellipsis |
509 | 8.5 | Dead code in the specification of default initialization |
510 | 12.6 | Default initialization of POD classes? |
513 | 1.8 | Non-class “most-derived” objects |
514 | 3.4.1 | Is the initializer for a namespace member in the scope of the namespace? |
515 | 14.6.2 | Non-dependent references to base class members |
516 | 7.1.6.2 | Use of signed in bit-field declarations |
517 | 14.5.5 | Partial specialization following explicit instantiation |
518 | 7.2 | Trailing comma following enumerator-list |
519 | 4.10 | Null pointer preservation in void* conversions |
520 | 5.4 | Old-style casts between incomplete class types |
521 | 3.7.3.1 | Requirements for exceptions thrown by allocation functions |
522 | 14.8.2.1 | Array-to-pointer decay in template argument deduction |
524 | 14.6.2 | Can function-notation calls to operator functions be dependent? |
525 | 14.7.1 | Missing * in example |
526 | 14.8.2.5 | Confusing aspects in the specification of non-deduced contexts |
530 | 5.19 | Nontype template arguments in constant expressions |
534 | 14 | template-names and operator-function-ids |
537 | 1.3 | Definition of “signature” |
538 | 9 | Definition and usage of structure, POD-struct, POD-union, and POD class |
540 | 7.3.1 | Propagation of cv-qualifiers in reference-to-reference collapse |
543 | 8.5 | Value initialization and default constructors |
551 | 14.7.2 | When is inline permitted in an explicit instantiation? |
557 | 3.4.2 | Does argument-dependent lookup cause template instantiation? |
558 | 2.2 | Excluded characters in universal character names |
559 | 14.6 | Editing error in issue 382 resolution |
568 | 9 | Definition of POD is too strict |
582 | 14.5.2 | Template conversion functions |
592 | 15.2 | Exceptions during construction of local static objects |
594 | 3.8 | Coordinating issues 119 and 404 with delegating constructors |
603 | 14.4 | Type equivalence and unsigned overflow |
606 | 14.8.2.1 | Template argument deduction for rvalue references |
613 | 9.2 | Unevaluated uses of non-static class members |
614 | 5.6 | Results of integer / and % |
620 | 9.2 | Declaration order in layout-compatible POD structs |
624 | 5.3.4 | Overflow in calculating size of allocation |
629 | 7.1.6.4 | auto parsing ambiguity |
632 | 8.5.1 | Brace-enclosed initializer for scalar member of aggregate |
634 | 5.2.2 | Conditionally-supported behavior for non-POD objects passed to ellipsis redux |
637 | 1.9 | Sequencing rules and example disagree |
639 | 1.9 | What makes side effects “different” from one another? |
644 | 3.9 | Should a trivial class type be a literal type? |
647 | 7.1.5 | Non-constexpr instances of constexpr constructor templates |
648 | 7.1.5 | Constant expressions in constexpr initializers |
649 | 3.11 | Optionally ill-formed extended alignment requests |
651 | 7.1.6.2 | Problems in decltype specification and examples |
654 | 4.10 | Conversions to and from nullptr_t |
659 | 5.3.6 | Alignment of function types |
660 | 7.2 | Unnamed scoped enumerations |
661 | 5.9 | Semantics of arithmetic comparisons |
663 | E | Valid Cyrillic identifier characters |
666 | 14.6 | Dependent qualified-ids without the typename keyword |
671 | 5.2.9 | Explicit conversion from a scoped enumeration type to integral type |
677 | 12.4 | Deleted operator delete and virtual destructors |
679 | 14.4 | Equivalence of template-ids and operator function templates |
681 | 8.3.5 | Restrictions on declarators with late-specified return types |
683 | 12.8 | Requirements for trivial subobject special functions |
684 | 5.19 | Constant expressions involving the address of an automatic variable |
686 | 8.1 | Type declarations/definitions in type-specifier-seqs and type-ids |
688 | 3.6.2 | Constexpr constructors and static initialization |
The following table list all issues resolved via the Library Working Group issues list and incorporated into CD1.
Issue | Section | Title |
182 | 17 [library] | Ambiguous references to size_t |
230 | 17 [library] | Assignable specified without also specifying CopyConstructible |
336 | 17 [library] | Clause 17 lack of references to deprecated headers |
262 | 17.3.2.1.2 [bitmask.types] | Bitmask operator ~ specified incorrectly |
229 | 17.4.1.1 [contents] | Unqualified references of other library entities |
310 | 17.4.1.2 [headers] | Is errno a macro? |
456 | 17.4.1.2 [headers] | Traditional C header files are overspecified |
465 | 17.4.1.2 [headers] | Contents of <ciso646> |
120 | 17.4.3.2 [reserved.names] | Can an implementor add specializations? |
226 | 17.4.3.2 [reserved.names] | User supplied specializations or overloads of namespace std function templates |
232 | 17.4.3.2 [reserved.names] | "depends" poorly defined in 17.4.3.1 |
422 | 17.4.3.2 [reserved.names] | explicit specializations of member functions of class templates |
294 | 17.4.3.2.1 [macro.names] | User defined macros and standard headers |
404 | 17.4.3.5 [replacement.functions] | May a replacement allocation function be declared inline? |
611 | 17.4.3.7 [res.on.functions] | Standard library templates and incomplete types |
225 | 17.4.4.3 [global.functions] | std:: algorithms use of other unqualified algorithms |
306 | 18.1 [support.types] | offsetof macro and non-POD types |
449 | 18.1 [support.types] | Library Issue 306 Goes Too Far |
201 | 18.2.1 [limits] | Numeric limits terminology wrong |
559 | 18.2.1 [limits] | numeric_limits<const T> |
497 | 18.2.1.2 [numeric.limits.members] | meaning of numeric_limits::traps for floating point types |
612 | 18.2.1.2 [numeric.limits.members] | numeric_limits::is_modulo insufficiently defined |
184 | 18.2.1.5 [numeric.special] | numeric_limits<bool> wording problems |
613 | 18.2.1.5 [numeric.special] | max_digits10 missing from numeric_limits |
416 | 18.2.2 [c.limits] | definitions of XXX_MIN and XXX_MAX macros in climits |
593 | 18.3 [cstdint] | __STDC_CONSTANT_MACROS |
206 | 18.5.1.1 [new.delete.single] | operator new(size_t, nothrow) may become unlinked to ordinary operator new if ordinary version replaced |
319 | 18.5.1.1 [new.delete.single] | Storage allocation wording confuses "Required behavior", "Requires" |
298 | 18.5.1.2 [new.delete.array] | ::operator delete[] requirement incorrect/insufficient |
266 | 18.7.2.1 [bad.exception] | bad_exception::~bad_exception() missing Effects clause |
744 | 18.7.5 [propagation] | What is the lifetime of an exception pointed to by an exception_ptr? |
746 | 18.7.5 [propagation] | current_exception may fail with bad_alloc |
820 | 18.7.5 [propagation] | current_exception()'s interaction with throwing copy ctors |
829 | 18.7.5 [propagation] | current_exception wording unclear about exception type |
619 | 18.9 [support.runtime] | Longjmp wording problem |
254 | 19.1 [std.exceptions] | Exception types in clause 19 are constructed from std::string |
288 | 19.3 [errno] | <cerrno> requirements missing macro EILSEQ |
804 | 19.4 [syserr] | Some problems with classes error_code/error_condition |
805 | 19.4 [syserr] | posix_error::posix_errno concerns |
698 | 19.4.5.1 [syserr.syserr.overview] | system_error needs const char* constructors |
312 | 20 [utilities] | Table 27 is missing headers |
672 | 20.1.1 [utility.arg.requirements] | Swappable requirements need updating |
258 | 20.1.2 [allocator.requirements] | Missing allocator requirement |
274 | 20.1.2 [allocator.requirements] | a missing/impossible allocator requirement |
401 | 20.1.2 [allocator.requirements] | incorrect type casts in table 32 in lib.allocator.requirements |
402 | 20.1.2 [allocator.requirements] | wrong new expression in [some_]allocator::construct |
700 | 20.2.2 [forward] | N1856 defines struct identity |
808 | 20.2.2 [forward] | [forward] incorrect redundant specification |
823 | 20.2.2 [forward] | identity<void> seems broken |
265 | 20.2.3 [pairs] | std::pair::pair() effects overly restrictive |
706 | 20.2.3 [pairs] | make_pair() should behave as make_tuple() wrt. reference_wrapper() |
522 | 20.4 [tuple] | Tuple doesn't define swap |
807 | 20.4.1.2 [tuple.cnstr] | tuple construction should not fail unless its element's construction fails |
775 | 20.4.1.4 [tuple.helper] | Tuple indexing should be unsigned? |
749 | 20.5.4.3 [meta.unary.prop] | Currently has_nothrow_copy_constructor<T>::value is true if T has 'a' nothrow copy constructor. |
705 | 20.5.7 [meta.trans.other] | type-trait decay incompletely specified |
856 | 20.5.7 [meta.trans.other] | Removal of aligned_union |
185 | 20.6 [function.objects] | Questionable use of term "inline" |
660 | 20.6 [function.objects] | Missing Bitwise Operations |
521 | 20.6.5 [refwrap] | Garbled requirements for argument_type in reference_wrapper |
689 | 20.6.5.1 [refwrap.const] | reference_wrapper constructor overly constrained |
284 | 20.6.7 [comparisons] | unportable example in 20.3.7, p6 |
297 | 20.6.8 [logical.operations] | const_mem_fun_t<>::argument_type should be const T* |
520 | 20.6.11.1 [func.bind] | Result_of and pointers to data members |
527 | 20.6.11.1.3 [func.bind.bind] | tr1::bind has lost its Throws clause |
770 | 20.6.15 [func.wrap] | std::function should use rvalue swap |
769 | 20.6.15.2 [func.wrap.func] | std::function should use nullptr_t instead of "unspecified-null-pointer-type" |
610 | 20.6.15.2.1 [func.wrap.func.con] | Suggested non-normative note for C++0x |
848 | 20.6.16 [unord.hash] | missing std::hash specializations for std::bitset/std::vector<bool> |
843 | 20.6.17.1 [func.referenceclosure.cons] | Reference Closure |
234 | 20.7.5.1 [allocator.members] | Typos in allocator definition |
400 | 20.7.5.1 [allocator.members] | redundant type cast in lib.allocator.members |
578 | 20.7.5.1 [allocator.members] | purpose of hint to allocator::allocate() |
634 | 20.7.5.1 [allocator.members] | allocator.address() doesn't work for types overloading operator& |
425 | 20.7.8 [temporary.buffer] | return value of std::get_temporary_buffer |
673 | 20.7.11 [unique.ptr] | unique_ptr update |
762 | 20.7.11 [unique.ptr] | std::unique_ptr requires complete type? |
806 | 20.7.11.2.5 [unique.ptr.single.modifiers] | unique_ptr::reset effects incorrect, too permissive |
740 | 20.7.11.4 [unique.ptr.compiletime] | Please remove *_ptr<T[N]> |
541 | 20.7.12.2 [util.smartptr.shared] | shared_ptr template assignment and void |
674 | 20.7.12.2 [util.smartptr.shared] | shared_ptr interface changes for consistency with N1856 |
710 | 20.7.12.2 [util.smartptr.shared] | Missing postconditions |
813 | 20.7.12.2 [util.smartptr.shared] | "empty" undefined for shared_ptr |
687 | 20.7.12.2.1 [util.smartptr.shared.const] | shared_ptr conversion constructor not constrained |
575 | 20.7.12.2.2 [util.smartptr.shared.dest] | the specification of ~shared_ptr is MT-unfriendly, makes implementation assumptions |
540 | 20.7.12.2.5 [util.smartptr.shared.obs] | shared_ptr<void>::operator*() |
542 | 20.7.12.2.5 [util.smartptr.shared.obs] | shared_ptr observers |
743 | 20.7.12.2.9 [util.smartptr.shared.spec] | rvalue swap for shared_ptr |
533 | 20.7.12.2.11 [util.smartptr.getdeleter] | typo in 2.2.3.10/1 |
545 | 20.7.12.2.11 [util.smartptr.getdeleter] | When is a deleter deleted? |
858 | 20.7.12.6 [util.dynamic.safety] | Wording for Minimal Support for Garbage Collection |
882 | 20.8.3.5 [time.duration.nonmember] | duration non-member arithmetic requirements |
335 | 21.1.1 [char.traits.require] | minor issue with char_traits, table 37 |
352 | 21.1.2 [char.traits.typedefs] | missing fpos requirements |
709 | 21.1.3 [char.traits.specializations] | char_traits::not_eof has wrong signature |
467 | 21.1.3.1 [char.traits.specializations.char] | char_traits::lt(), compare(), and memcmp() |
180 | 21.3 [basic.string] | Container member iterator arguments constness has unintended consequences |
263 | 21.3 [basic.string] | Severe restriction on basic_string reference counting |
530 | 21.3 [basic.string] | Must elements of a string be contiguous? |
534 | 21.3 [basic.string] | Missing basic_string members |
301 | 21.3.1 [string.require] | basic_string template ctor effects clause omits allocator argument |
259 | 21.3.4 [string.capacity] | basic_string::operator[] and const correctness |
428 | 21.3.6.5 [string::erase] | string::erase(iterator) validity |
403 | 21.3.6.8 [string::swap] | basic_string::swap should not throw exceptions |
535 | 21.3.6.8 [string::swap] | std::string::swap specification poorly worded |
91 | 21.3.8.9 [string.io] | Description of operator>> and getline() for string<> might cause endless loop |
435 | 21.3.8.9 [string.io] | bug in DR 25 |
586 | 21.3.8.9 [string.io] | string inserter not a formatted function |
824 | 21.3.8.9 [string.io] | rvalue ref issue with basic_string inserter |
771 | 21.4 [string.conversions] | Impossible throws clause in [string.conversions] |
772 | 21.4 [string.conversions] | Impossible return clause in [string.conversions] |
345 | 21.5 [c.strings] | type tm in <cwchar> |
317 | 22 [localization] | Instantiation vs. specialization of facets |
495 | 22 [localization] | Clause 22 template parameter requirements |
268 | 22.1.1 [locale] | Typo in locale synopsis |
360 | 22.1.1 [locale] | locale mandates inefficient implementation |
327 | 22.1.1.1.1 [locale.category] | Typo in time_get facet in table 52 |
340 | 22.1.1.1.1 [locale.category] | interpretation of has_facet<Facet>(loc) |
347 | 22.1.1.1.1 [locale.category] | locale::category and bitmask requirements |
436 | 22.1.1.1.2 [locale.facet] | are cv-qualified facet types valid facets? |
391 | 22.1.3.2 [conversions] | non-member functions specified as const |
228 | 22.2 [locale.categories] | Incorrect specification of "..._byname" facets |
338 | 22.2 [locale.categories] | is whitespace allowed between `-' and a digit? |
339 | 22.2.1 [category.ctype] | definition of bitmask type restricted to clause 27 |
379 | 22.2.1.1.2 [locale.ctype.virtuals] | nonsensical ctype::do_widen() requirement |
616 | 22.2.1.2 [locale.ctype.byname] | missing 'typename' in ctype_byname |
695 | 22.2.1.3 [facet.ctype.special] | ctype<char>::classic_table() not accessible |
153 | 22.2.1.3.2 [facet.ctype.char.members] | Typo in narrow() semantics |
76 | 22.2.1.4 [locale.codecvt] | Can a codecvt facet always convert one internal character at a time? |
664 | 22.2.1.4.2 [locale.codecvt.virtuals] | do_unshift for codecvt<char, char, mbstate_t> |
665 | 22.2.1.4.2 [locale.codecvt.virtuals] | do_unshift return value |
305 | 22.2.1.5 [locale.codecvt.byname] | Default behavior of codecvt<wchar_t, char, mbstate_t>::length() |
380 | 22.2.1.5 [locale.codecvt.byname] | typos in codecvt tables 53 and 54 |
381 | 22.2.1.5 [locale.codecvt.byname] | detection of invalid mbstate_t in codecvt |
275 | 22.2.2.1.1 [facet.num.get.members] | Wrong type in num_get::get() overloads |
23 | 22.2.2.1.2 [facet.num.get.virtuals] | Num_get overflow result |
221 | 22.2.2.1.2 [facet.num.get.virtuals] | num_get<>::do_get stage 2 processing broken |
321 | 22.2.2.1.2 [facet.num.get.virtuals] | Typo in num_get |
358 | 22.2.2.1.2 [facet.num.get.virtuals] | interpreting thousands_sep after a decimal_point |
359 | 22.2.2.2.1 [facet.num.put.members] | num_put<>::do_put (..., bool) undocumented |
231 | 22.2.2.2.2 [facet.num.put.virtuals] | Precision in iostream? |
282 | 22.2.2.2.2 [facet.num.put.virtuals] | What types does numpunct grouping refer to? |
318 | 22.2.3.2 [locale.numpunct.byname] | Misleading comment in definition of numpunct_byname |
248 | 22.2.5 [category.time] | time_get fails to set eofbit |
461 | 22.2.5.1.2 [locale.time.get.virtuals] | time_get hard or impossible to implement |
328 | 22.2.6.2.2 [locale.money.put.virtuals] | Bad sprintf format modifier in money_put<>::do_put() |
325 | 22.2.6.3.2 [locale.moneypunct.virtuals] | Misleading text in moneypunct<>::do_grouping |
666 | 22.2.6.3.2 [locale.moneypunct.virtuals] | moneypunct::do_curr_symbol() |
179 | 23.1 [container.requirements] | Comparison of const_iterators to iterators doesn't work |
276 | 23.1 [container.requirements] | Assignable requirement for container value type overly strict |
322 | 23.1 [container.requirements] | iterator and const_iterator should have the same value type |
371 | 23.1 [container.requirements] | Stability of multiset and multimap member functions |
589 | 23.1 [container.requirements] | Requirements on iterators of member template functions of containers |
675 | 23.1 [container.requirements] | Move assignment of containers |
759 | 23.1 [container.requirements] | A reference is not an object |
766 | 23.1 [container.requirements] | Inconsistent exception guarantees between ordered and unordered associative containers |
842 | 23.1 [container.requirements] | ConstructibleAsElement and bit containers |
355 | 23.1.3 [sequence.reqmts] | Operational semantics for a.back() |
438 | 23.1.3 [sequence.reqmts] | Ambiguity in the "do the right thing" clause |
103 | 23.1.4 [associative.reqmts] | set::iterator is required to be modifiable, but this allows modification of keys |
130 | 23.1.4 [associative.reqmts] | Return type of container::erase(iterator) differs for associative containers |
233 | 23.1.4 [associative.reqmts] | Insertion hints in associative containers |
264 | 23.1.4 [associative.reqmts] | Associative container insert(i, j) complexity requirements are not feasible. |
316 | 23.1.4 [associative.reqmts] | Vague text in Table 69 |
354 | 23.1.4 [associative.reqmts] | Associative container lower/upper bound requirements |
518 | 23.1.5 [unord.req] | Are insert and erase stable for unordered_multiset and unordered_multimap? |
679 | 23.2 [sequences] | resize parameter by value |
519 | 23.2.1 [array] | Data() undocumented |
720 | 23.2.1 [array] | Omissions in constexpr usages |
776 | 23.2.1 [array] | Undescribed assign function of std::array |
237 | 23.2.2.1 [deque.cons] | Undefined expression in complexity specification |
850 | 23.2.2.2 [deque.capacity] | Should shrink_to_fit apply to std::deque? |
638 | 23.2.2.3 [deque.modifiers] | deque end invalidation during erase |
307 | 23.2.4 [list] | Lack of reference typedefs in container adaptors |
320 | 23.2.4.1 [list.cons] | list::assign overspecified |
410 | 23.2.4.1 [list.cons] | Missing semantics for stack and queue comparison operators |
250 | 23.2.4.4 [list.ops] | splicing invalidates iterators |
278 | 23.2.4.4 [list.ops] | What does iterator validity mean? |
300 | 23.2.4.4 [list.ops] | list::merge() specification incomplete |
315 | 23.2.4.4 [list.ops] | Bad "range" in list::unique complexity |
464 | 23.2.6 [vector] | Suggestion for new member functions in standard containers |
469 | 23.2.6 [vector] | vector<bool> ill-formed relational operators |
496 | 23.2.6 [vector] | Illegal use of "T" in vector<bool> |
329 | 23.2.6.2 [vector.capacity] | vector capacity, reserve and reallocation |
341 | 23.2.6.2 [vector.capacity] | Vector reallocation and swap |
755 | 23.2.6.2 [vector.capacity] | std::vector and std:string lack explicit shrink-to-fit operations |
247 | 23.2.6.4 [vector.modifiers] | vector, deque::insert complexity |
406 | 23.2.6.4 [vector.modifiers] | vector::insert(s) exception safety |
414 | 23.2.6.4 [vector.modifiers] | Which iterators are invalidated by v.erase()? |
334 | 23.3.1.2 [map.access] | map::operator[] specification forces inefficient implementation |
703 | 23.3.1.2 [map.access] | map::at() need a complexity specification |
214 | 23.3.3 [set] | set::find() missing const overload |
693 | 23.3.5 [template.bitset] | std::bitset::all() missing |
694 | 23.3.5 [template.bitset] | std::bitset and long long |
396 | 23.3.5.1 [bitset.cons] | what are characters zero and one |
457 | 23.3.5.1 [bitset.cons] | bitset constructor: incorrect number of initialized bits |
778 | 23.3.5.1 [bitset.cons] | std::bitset does not have any constructor taking a string literal |
186 | 23.3.5.2 [bitset.members] | bitset::set() second parameter should be bool |
434 | 23.3.5.2 [bitset.members] | bitset::to_string() hard to use |
303 | 23.3.5.3 [bitset.operators] | Bitset input operator underspecified |
691 | 23.4 [unord] | const_local_iterator cbegin, cend missing from TR1 |
852 | 23.4 [unord] | unordered containers begin(n) mistakenly const |
761 | 23.4.1.2 [unord.map.elem] | unordered_map needs an at() member function |
198 | 24.1 [iterator.requirements] | Validity of pointers and references unspecified after iterator destruction |
346 | 24.1 [iterator.requirements] | Some iterator member functions should be const |
407 | 24.1 [iterator.requirements] | Can singular iterators be destroyed? |
98 | 24.1.1 [input.iterators] | Input iterator requirements are badly written |
324 | 24.1.2 [output.iterators] | Do output iterators have value types? |
200 | 24.1.3 [forward.iterators] | Forward iterator requirements don't allow constant iterators |
478 | 24.1.3 [forward.iterators] | Should forward iterator requirements table have a line for r->m? |
383 | 24.1.4 [bidirectional.iterators] | Bidirectional iterator assertion typo |
448 | 24.1.5 [random.access.iterators] | Random Access Iterators over abstract classes |
445 | 24.3.1 [iterator.traits] | iterator_traits::reference unspecified for some iterator categories |
280 | 24.4.1 [reverse.iterators] | Comparison of reverse_iterator to const reverse_iterator |
235 | 24.4.1.1 [reverse.iterator] | No specification of default ctor for reverse_iterator |
386 | 24.4.1.3.11 [reverse.iter.op-=] | Reverse iterator's operator[] has impossible return type |
685 | 24.4.1.3.19 [reverse.iter.opdiff] | reverse_iterator/move_iterator difference has invalid signatures |
561 | 24.4.2.6.5 [inserter] | inserter overly generic |
680 | 24.4.3.1 [move.iterator] | move_iterator operator-> return |
260 | 24.5.1.2 [istream.iterator.ops] | Inconsistent return type of istream_iterator::operator++(int) |
261 | 24.5.1.2 [istream.iterator.ops] | Missing description of istream_iterator::operator!= |
349 | 24.5.2 [ostream.iterator] | Minor typographical error in ostream_iterator |
92 | 25 [algorithms] | Incomplete Algorithm Requirements |
475 | 25.1.4 [alg.foreach] | May the function object passed to for_each modify the elements of the iterated sequence? |
576 | 25.1.7 [alg.find.first.of] | find_first_of is overconstrained |
240 | 25.1.8 [alg.adjacent.find] | Complexity of adjacent_find() is meaningless |
426 | 25.1.12 [alg.search] | search_n(), fill_n(), and generate_n() with negative n |
714 | 25.1.12 [alg.search] | search_n complexity is too lax |
187 | 25.2.3 [alg.swap] | iter_swap underspecified |
809 | 25.2.3 [alg.swap] | std::swap should be overloaded for array types |
242 | 25.2.4 [alg.transform] | Side effects of function objects |
283 | 25.2.5 [alg.replace] | std::replace() requirement incorrect/insufficient |
337 | 25.2.5 [alg.replace] | replace_copy_if's template parameter should be InputIterator |
779 | 25.2.8 [alg.remove] | Resolution of #283 incomplete |
202 | 25.2.9 [alg.unique] | unique() effects unclear when predicate not an equivalence relation |
239 | 25.2.9 [alg.unique] | Complexity of unique() and/or unique_copy incorrect |
241 | 25.2.9 [alg.unique] | Does unique_copy() require CopyConstructible and Assignable? |
538 | 25.2.9 [alg.unique] | 241 again: Does unique_copy() require CopyConstructible and Assignable? |
488 | 25.2.11 [alg.rotate] | rotate throws away useful information |
552 | 25.2.12 [alg.random.shuffle] | random_shuffle and its generator |
713 | 25.3.1.1 [sort] | sort() complexity is too lax |
270 | 25.3.3 [alg.binary.search] | Binary search requirements overly strict |
577 | 25.3.3.2 [upper.bound] | upper_bound(first, last, ...) cannot return last |
384 | 25.3.3.3 [equal.range] | equal_range has unimplementable runtime complexity |
787 | 25.3.3.4 [binary.search] | complexity of binary_search |
291 | 25.3.5 [alg.set.operations] | Underspecification of set algorithms |
411 | 25.3.5 [alg.set.operations] | Wrong names of set member functions |
281 | 25.3.7 [alg.min.max] | std::min() and max() requirements overly restrictive |
715 | 25.3.7 [alg.min.max] | minmax_element complexity is too lax |
286 | 25.4 [alg.c.library] | <cstdlib> requirements missing size_t typedef |
405 | 25.4 [alg.c.library] | qsort and POD |
387 | 26.3 [complex.numbers] | std::complex over-encapsulated |
629 | 26.3.6 [complex.ops] | complex<T> insertion and locale dependence |
595 | 26.3.7 [complex.value.ops] | TR1/C++0x: fabs(complex<T>) redundant / wrongly specified |
781 | 26.3.7 [complex.value.ops] | std::complex should add missing C99 functions |
844 | 26.3.9 [cmplx.over] | complex pow return type is ambiguous |
551 | 26.3.11 [cmplxh] | <ccomplex> |
507 | 26.4 [rand] | Missing requirement for variate_generator::operator() |
699 | 26.4 [rand] | N2111 changes min/max |
505 | 26.4.1 [rand.req] | Result_type in random distribution requirements |
654 | 26.4.1.3 [rand.req.eng] | Missing IO roundtrip for random number engines |
678 | 26.4.1.3 [rand.req.eng] | Changes for [rand.req.eng] |
728 | 26.4.3.2 [rand.eng.mers] | Problem in [rand.eng.mers]/6 |
609 | 26.4.4.2 [rand.adapt.ibits] | missing static const |
789 | 26.4.4.4 [rand.adapt.xor] | xor_combine_engine(result_type) should be explicit |
508 | 26.4.5 [rand.predef] | Bad parameters for ranlux64_base_01 |
607 | 26.4.7.1 [rand.util.seedseq] | Concern about short seed vectors |
608 | 26.4.7.1 [rand.util.seedseq] | Unclear seed_seq construction details |
677 | 26.4.7.1 [rand.util.seedseq] | Weaknesses in seed_seq::randomize [rand.util.seedseq] |
712 | 26.4.7.1 [rand.util.seedseq] | seed_seq::size no longer useful |
782 | 26.4.7.1 [rand.util.seedseq] | Extended seed_seq constructor is useless |
655 | 26.4.7.2 [rand.util.canonical] | Signature of generate_canonical not useful |
734 | 26.4.8.4.3 [rand.dist.norm.chisq] | Unnecessary restriction in [rand.dist.norm.chisq] |
792 | 26.4.8.5.2 [rand.dist.samp.pconst] | piecewise_constant_distribution is undefined for a range with just one endpoint |
621 | 26.5 [numarray] | non-const copy assignment operators of helper arrays |
253 | 26.5.2.1 [valarray.cons] | valarray helper functions are almost entirely useless |
620 | 26.5.2.1 [valarray.cons] | valid uses of empty valarrays |
624 | 26.5.2.2 [valarray.assign] | valarray assignment and arrays of unequal length |
389 | 26.5.2.3 [valarray.access] | Const overload of valarray::operator[] returns by value |
618 | 26.5.2.7 [valarray.members] | valarray::cshift() effects on empty array |
543 | 26.5.4 [class.slice] | valarray slice default constructor |
123 | 26.5.5.3 [slice.arr.fill] | Should valarray helper arrays fill functions be const? |
295 | 26.7 [c.math] | Is abs defined in <cmath>? |
395 | 26.7 [c.math] | inconsistencies in the definitions of rand() and random_shuffle() |
550 | 26.7 [c.math] | What should the return type of pow(float,int) be? |
722 | 26.7 [c.math] | Missing [c.math] functions nanf and nanl |
44 | 27 [input.output] | Iostreams use operator== on int_type values |
273 | 27 [input.output] | Missing ios_base qualification on members of a dependent class |
308 | 27 [input.output] | Table 82 mentions unrelated headers |
365 | 27 [input.output] | Lack of const-qualification in clause 27 |
623 | 27.1.1 [iostream.limits.imbue] | pubimbue forbidden to call imbue |
369 | 27.3 [iostream.objects] | io stream objects and static ctors |
455 | 27.3 [iostream.objects] | cerr::tie() and wcerr::tie() are overspecified |
574 | 27.3 [iostream.objects] | DR 369 Contradicts Text |
331 | 27.4.2.1.1 [ios::failure] | bad declaration of destructor for ios_base::failure |
363 | 27.4.2.1.1 [ios::failure] | Missing exception specification in 27.4.2.1.1 |
49 | 27.4.2.4 [ios.members.static] | Underspecification of ios_base::sync_with_stdio |
441 | 27.4.3 [fpos] | Is fpos::state const? |
256 | 27.4.4.2 [basic.ios.members] | typo in 27.4.4.2, p17: copy_event does not exist |
292 | 27.4.4.2 [basic.ios.members] | effects of a.copyfmt (a) |
272 | 27.4.4.3 [iostate.flags] | Missing parentheses around subexpression |
412 | 27.4.4.3 [iostate.flags] | Typo in 27.4.4.3 |
468 | 27.4.4.3 [iostate.flags] | unexpected consequences of ios_base::operator void*() |
364 | 27.5.2.4.2 [streambuf.virt.buffer] | Inconsistent wording in 27.5.2.4.2 |
567 | 27.6 [iostream.format] | streambuf inserter and extractor should be unformatted |
373 | 27.6.1.2.1 [istream.formatted.reqmts] | Are basic_istream and basic_ostream to use (exceptions()&badbit) != 0 ? |
118 | 27.6.1.2.2 [istream.formatted.arithmetic] | basic_istream uses nonexistent num_get member functions |
661 | 27.6.1.2.2 [istream.formatted.arithmetic] | New 27.6.1.2.2 changes make special extractions useless |
413 | 27.6.1.2.3 [istream::extractors] | Proposed resolution to LDR#64 still wrong |
136 | 27.6.1.3 [istream.unformatted] | seekp, seekg setting wrong streams? |
243 | 27.6.1.3 [istream.unformatted] | get and getline when sentry reports failure |
370 | 27.6.1.3 [istream.unformatted] | Minor error in basic_istream::get |
531 | 27.6.1.3 [istream.unformatted] | array forms of unformatted input functions |
537 | 27.6.1.3 [istream.unformatted] | Typos in the signatures in 27.6.1.3/42-43 and 27.6.2.4 |
566 | 27.6.1.3 [istream.unformatted] | array forms of unformatted input function undefined for zero-element arrays |
415 | 27.6.1.4 [istream.manip] | behavior of std::ws |
271 | 27.6.1.5 [iostreamclass] | basic_iostream missing typedefs |
165 | 27.6.2.1 [ostream] | xsputn(), pubsync() never called by basic_ostream members? |
311 | 27.6.2.1 [ostream] | Incorrect wording in basic_ostream class synopsis |
442 | 27.6.2.4 [ostream::sentry] | sentry::operator bool() inconsistent signature |
117 | 27.6.2.6.2 [ostream.inserters.arithmetic] | basic_ostream uses nonexistent num_put member functions |
640 | 27.6.2.6.2 [ostream.inserters.arithmetic] | 27.6.2.5.2 does not handle (unsigned) long long |
167 | 27.6.2.6.4 [ostream.inserters.character] | Improper use of traits_type::length() |
474 | 27.6.2.6.4 [ostream.inserters.character] | confusing Footnote 297 |
581 | 27.6.2.7 [ostream.unformatted] | flush() not unformatted function |
333 | 27.6.2.8 [ostream.manip] | does endl imply synchronization with the device? |
183 | 27.6.3 [std.manip] | I/O stream manipulators don't work for wide character streams |
692 | 27.6.4 [ext.manip] | get_money and put_money should be formatted I/O functions |
252 | 27.7 [string.streams] | missing casts/C-style casts used in iostreams |
562 | 27.7 [string.streams] | stringbuf ctor inefficient |
251 | 27.7.1 [stringbuf] | basic_stringbuf missing allocator_type |
238 | 27.7.1.1 [stringbuf.cons] | Contradictory results of stringbuf initialization. |
375 | 27.7.1.4 [stringbuf.virtuals] | basic_ios should be ios_base in 27.7.1.3 |
376 | 27.7.1.4 [stringbuf.virtuals] | basic_streambuf semantics |
432 | 27.7.1.4 [stringbuf.virtuals] | stringbuf::overflow() makes only one write position available |
453 | 27.7.1.4 [stringbuf.virtuals] | basic_stringbuf::seekoff need not always fail for an empty stream |
563 | 27.7.1.4 [stringbuf.virtuals] | stringbuf seeking from end |
420 | 27.8.1 [fstreams] | is std::FILE a complete type? |
444 | 27.8.1 [fstreams] | Bad use of casts in fstream |
460 | 27.8.1 [fstreams] | Default modes missing from basic_fstream member specifications |
643 | 27.8.1.1 [filebuf] | Impossible "as if" clauses |
443 | 27.8.1.4 [filebuf.members] | filebuf::close() inconsistent use of EOF |
596 | 27.8.1.4 [filebuf.members] | 27.8.1.3 Table 112 omits "a+" and "a+b" modes |
171 | 27.8.1.5 [filebuf.virtuals] | Strange seekpos() semantics due to joint position |
285 | 27.8.1.7 [ifstream.cons] | minor editorial errors in fstream ctors |
409 | 27.8.1.9 [ifstream.members] | Closing an fstream should clear error state |
622 | 27.8.1.17 [fstream.members] | behavior of filebuf dtor and close on error |
524 | 28 [re] | regex named character classes and case-insensitivity don't mix |
628 | 28.8 [re.regex] | Inconsistent definition of basic_regex constructor |
682 | 28.8.2 [re.regex.construct] | basic_regex ctor takes InputIterator or ForwardIterator? |
681 | 28.9.2 [re.submatch.op] | Operator functions impossible to compare are defined in [re.submatch.op] |
646 | 28.10.4 [re.results.form] | const incorrect match_result members |
652 | 28.12.1 [re.regiter] | regex_iterator and const correctness |
650 | 28.12.2 [re.tokiter] | regex_token_iterator and const correctness |
651 | 28.12.2.1 [re.tokiter.cnstr] | Missing preconditions for regex_token_iterator c'tors |
818 | 29.1 [atomics.order] | wording for memory ordering |
845 | 29.3 [atomics.types] | atomics cannot support aggregate initialization |
846 | 29.3 [atomics.types] | No definition for constructor |
768 | 29.3.3 [atomics.types.generic] | Typos in [atomics]? |
777 | 29.4 [atomics.types.operations] | Atomics Library Issue |
783 | 30.2.1.1 [thread.thread.id] | thread::id reuse |
109 | D.8 [depr.lib.binders] | Missing binders for non-const sequence elements |
362 | D.8 [depr.lib.binders] | bind1st/bind2nd type safety |
798 | D.8 [depr.lib.binders] | Refactoring of binders lead to interface breakage |