C++ Standard Library Issues List (Revision 17)

Index by Status

Reference ISO/IEC IS 14882:1998(E)

This document is the Table of Contents for the Library Active Issues List, Library Defect Report List, and Library Closed Issues List.

Also see:

Index by Status

DR (125 issues)

IssueSectionTitle
117.4.2.2C library linkage editing oversight
318.3Atexit registration during atexit() call is not described
521.3.6.8String::compare specification questionable
721String clause minor problems
822.1.1.5Locale::global lacks guarantee
918.4.1Operator new(0) calls should not yield the same pointer
1123.3.5Bitset minor problems
1327.6.1.2.3Eos refuses to die
1422.1.1.3Locale::combine should be const
1522.1.1.3Locale::name requirement inconsistent
1622.2.1.4Bad ctype_byname<char> decl
1722.2.2.1.2Bad bool parsing
1822.2.2.1.1Get(...bool&) omitted
1922.2.1.5.2"Noconv" definition too vague
2022.2.3.1.2Thousands_sep returns wrong type
2122.1.1.1.1Codecvt_byname<> instantiations
2227.8.1.7Member open vs. flags
2422.2.1.5.2"do_convert" doesn't exist
2521.3.7.9String operator<< uses width() value wrong
2627.6.1.1.2Bad sentry example
2721.3.5.5String::erase(range) yields wrong iterator
2822.2.1.3.2Ctype<char>is ambiguous
2927.3.1Ios_base::init doesn't exist
3022.1.1.1.1Wrong header for LC_*
3122.1.1Immutable locale values
3227.5.2.4.4Pbackfail description inconsistent
3322.2.1.5.2Codecvt<> mentions from_type
3422.2.2.2.2True/falsename() not in ctype<>
3527.4No manipulator unitbuf in synopsis
3627.4.2.5Iword & pword storage lifetime omitted
3722.1.1Leftover "global" reference
3822.1.2Facet definition incomplete
3924.5.3.4istreambuf_iterator<>::operator++(int) definition garbled
4022.2.8Meaningless normative paragraph in examples
4127.4.2Ios_base needs clear(), exceptions()
4221.3String ctors specify wrong default allocator
46D.7Minor Annex D errors
4727.4.2.3Imbue() and getloc() Returns clauses swapped
4827.4.2.1.1Use of non-existent exception constructor
5027.4.2Copy constructor and assignment operator of ios_base
5123.1Requirement to not invalidate iterators missing
5227.4.3.2Small I/O problems
5327.4.4.1Basic_ios destructor unspecified
5427.5.2.1Basic_streambuf's destructor
5527Invalid stream position is undefined
5627.5.2Showmanyc's return type
5721.1.3.2Mistake in char_traits
5927.5.2.3.1Ambiguity in specification of gbump
6027.6.1.2.1What is a formatted input function?
6127.6.1.3Ambiguity in iostreams exception policy
6227.6.1.3Sync's return value
6327.6.2.6Exception-handling policy for unformatted output
6427.6.1.2.3Exception handling in basic_istream::operator>>(basic_streambuf*)
66D.7.1.3Strstreambuf::setbuf
6827.6.1.2.3Extractors for char* should store null at end
6923.2.4Must elements of a vector be contiguous?
7018.6Uncaught_exception() missing throw() specification
7122.2.5.1Do_get_monthname synopsis missing argument
7422.2.1.5.2Garbled text for codecvt::do_max_length
7522.2.1.5Contradiction in codecvt::length's argument types
7827.4.2Typo: event_call_back
7926.2.1Inconsistent declaration of polar()
8026.2.1Global Operators of complex declared twice
8321.3String::npos vs. string::max_size()
8621.3.1String constructors don't describe exceptions
9021.3.7.9Incorrect description of operator >> for strings
10626.3.5Numeric library private members are implementation defined
10818.6.1Lifetime of exception::what() return unspecified
11024.5.3istreambuf_iterator::equal not const
11224.5.4.1Minor typo in ostreambuf_iterator constructor
11418.4.1.3Placement forms example in error twice
115D.7.4.1Typo in strstream constructors
11917.4.4.8Should virtual functions be allowed to strengthen the exception specification?
12227.5.2streambuf/wstreambuf description should not say they are specializations
12422.2.1.2ctype_byname<charT>::do_scan_is & do_scan_not return type should be const charT*
12526.3.2valarray<T>::operator!() return type is inconsistent
12622.2.1.1.2typos in Effects clause of ctype::do_narrow()
12720.4.5auto_ptr<> conversion issues
12927.6.1.3Need error indication from seekp() and seekg()
13223.2.2.2list::resize description uses random access iterators
13323.3.1map missing get_allocator()
13423.2.4.1vector constructors over specified
13722.1.1Do use_facet and has_facet look in the global locale?
13923.1.1Optional sequence operation table description unclear
14121.3.6.4basic_string::find_last_of, find_last_not_of say pos instead of xpos
14225.3.8lexicographical_compare complexity wrong
14423.2.1.1Deque constructor complexity wrong
14626.2.6complex<T> Inserter and Extractor need sentries
14717.4.4.3Library Intro refers to global functions that aren't global
14822.2.8Functions in the example facet BoolNames should be const
15025.1.4Find_first_of says integer instead of iterator
15123.1.1Can't currently clear() empty container
15222.2.1.1.2Typo in scan_is() semantics
15422.2.2.1.2Missing double specifier for do_get()
15527.3Typo in naming the class defining the class Init
15627.4.2.3Typo in imbue() description
15827.5.2.4.2Underspecified semantics for setbuf()
15927.5.2.4.3Strange use of underflow()
16027.6.1.1Typo: Use of non-existing function exception()
16127.6.1.2.2Typo: istream_iterator vs. istreambuf_iterator
16422.2.5.3.2do_put() has apparently unused fill argument
16827.6.2.6Typo: formatted vs. unformatted
16927.7.1.3Bad efficiency of overflow() mandated
17027.7.4Inconsistent definition of traits_type
17227.6.1.3Inconsistent types for basic_istream::ignore()
17327.8.1.4Inconsistent types for basic_filebuf::setbuf()
174D.6Typo: OFF_T vs. POS_T
175D.6Ambiguity for basic_streambuf::pubseekpos() and a few other functions.
176D.6exceptions() in ios_base...?
18120.2.2make_pair() unintended behavior
18927.4.2.2setprecision() not specified correctly
19325.3.6Heap operations description incorrect
19527.6.1.1.2Should basic_istream::sentry's constructor ever set eofbit?
19920.1.5What does allocate(0) return?
20824.1Unnecessary restriction on past-the-end iterators
20921.3basic_string declarations inconsistent
21025distance first and last confused
21121.3.7.9operator>>(istream&, string&) doesn't set failbit
21225.3.7Empty range behavior unclear for several algorithms
21722.2.8Facets example (Classifying Japanese characters) contains errors
22027.4.2.7~ios_base() usage valid?
22217.3.1.3Are throw clauses necessary if a throw is already implied by the effects clause?
22325.2.9reverse algorithm should use iter_swap rather than swap
22423.1.2clear() complexity for associative containers refers to undefined N
22725.2.2std::swap() should require CopyConstructible or DefaultConstructible arguments

Dup (16 issues)

IssueSectionTitle
1022.2.1.5.2Codecvt<>::do unclear
4322.2.1.5.2Locale table correction
6721.3.7.9Setw useless for strings
7222.2.1.5Do_convert phantom member function
8721.3.6.8Error in description of string::compare()
8921.3.5.4Missing throw specification for string::insert() and string::replace()
10223.1.2Bug in insert range in associative containers
15727.4.2.5Meaningless error handling for pword() and iword()
16227.6.1.2.3Really "formatted input functions"?
16327.6.1.3Return of gcount() after a call to gcount
16627.6.2.5.3Really "formatted output functions"?
19618.4.1.3Placement new example has alignment problems
20722.2.1.3.2ctype<char> members return clause incomplete
21627.6.3setbase manipulator description flawed
23622.2.1.3.2ctype<char>::is() member modifies facet
24623.1.2a.insert(p,t) is incorrectly specified

NAD (58 issues)

IssueSectionTitle
220.4.5.3Auto_ptr conversions effects incorrect
421.3Basic_string size_type and difference_type should be implementation defined
627.4.3File position not an offset unimplementable
1220.1.5Way objects hold allocators unclear
4527.7.3Stringstreams read/write pointers initial position unclear
5827.6.1.2.3Extracting a char from a wide-oriented stream
65D.7.1.3Underspecification of strstreambuf::seekoff
7327.8.1is_open should be const
7726.3.2.3Valarray operator[] const returning value
8126.3.5Wrong declaration of slice operations
8223.1.2Missing constant for set elements
8421.3.5Ambiguity with string::insert()
8521String char types
8821.3.5.4Inconsistency between string::insert() and string::append()
9326.3Incomplete Valarray Subset Definitions
9417.4.4May library implementors add template parameters to Standard Library classes?
9517.4.4.4Members added by the implementation
9723Insert inconsistent definition
9924.4.1.3.13Reverse_iterator comparisons completely wrong
10024.4.2Insert iterators/ostream_iterators overconstrained
10123.2.4No way to free storage for vector and deque
10421.3.4Description of basic_string::operator[] is unclear
10527.8fstream ctors argument types desired
10726.3.2Valarray constructor is strange
11327.6.1.1Missing/extra iostream sync semantics
11623.3.5bitset cannot be constructed with a const char*
12122.1.1.1.1Detailed definition for ctype<wchar_t> specialization
12827.7Need open_mode() function for file stream, string streams, file buffers, and string  buffers
13023.1.2Return type of container::erase(iterator) differs for associative containers
13123.2.2.4list::splice throws nothing
13527.6.1.5.1basic_iostream doubly initialized
13822.2.1.4Class ctype_byname<char> redundant and misleading
14023.3.1map<Key, T>::value_type does not satisfy the assignable requirement
143D.5C .h header wording unclear
14527.4.4.1adjustfield lacks default value
14923.1.1Insert should return iterator to first element inserted
17726.2.6Complex operators cannot be explicitly instantiated
17827.3.1Should clog and cerr initially be tied to cout?
18023Container member iterator arguments constness has unintended consequences
18826.3.2.6valarray helpers missing augmented assignment operators
19025.3.7min() and max() functions should be std::binary_functions
19125.3.3Unclear complexity for algorithms such as binary search
19223.1.2a.insert(p,t) is inefficient and overconstrained
19427.4.4rdbuf() functions poorly specified
20327.6.1.1.2basic_istream::sentry::sentry() is uninstantiable with ctype<user-defined type>
20424.3.4distance(first, last) when "last" is before "first"
20518.2.1.2 numeric_limits unclear on how to determine floating point types
20618.4.1.1operator new(size_t, nothrow) may become unlinked to ordinary operator new if ordinary version replaced
21326.5Math function overloads ambiguous
21523.1.2Can a map's key_type be const?
21825.3Algorithms do not use binary predicate objects for default comparisons
21925.1.2find algorithm missing version that takes a binary predicate argument
24425.1.2Must find's third argument be CopyConstructible?
24524.5.1Which operations on istream_iterator trigger input operations?
24920.4.5Return Type of auto_ptr::operator=
25527.5.2Why do basic_streambuf<>::pbump() and gbump() take an int?
25720.3.1STL functional object and iterator inheritance.
26918.7cstdarg and unnamed parameters

Ready (25 issues)

IssueSectionTitle
10323.1.2set::iterator is required to be modifiable, but this allows modification of keys
11827.6.1.2.2basic_istream uses nonexistent num_get member functions
13627.6.1.3seekp, seekg setting wrong streams?
15322.2.1.3.2Typo in narrow() semantics
16527.6.2.1xsputn(), pubsync() never called by basic_ostream members?
17127.8.1.4Strange seekpos() semantics due to joint position
18327.6.3I/O stream manipulators don't work for wide character streams
18418.2.1.5numeric_limits<bool> wording problems
18520.3Questionable use of term "inline"
18623.3.5.2bitset::set() second parameter should be bool
21423.3.3set::find() missing const overload
22122.2.2.1.2num_get<>::do_get stage 2 processing broken
23420.4.1.1Typos in allocator definition
23723.2.2.1Undefined expression in complexity specification
24327.6.1.3get and getline when sentry reports failure
24822.2.5time_get fails to set eofbit
25127.7.1basic_stringbuf missing allocator_type
25227.7missing casts/C-style casts used in iostreams
25627.4.4.2typo in 27.4.4.2, p17: copy_event does not exist
26024.5.1.2Inconsistent return type of istream_iterator::operator++(int)
26124.5.1.2Missing description of istream_iterator::operator!=
26217.3.2.1.2Bitmask operator ~ specified incorrectly
26321.3Severe restriction on basic_string reference counting
26520.2.2std::pair::pair() effects overly restrictive
26822.1.1Typo in locale synopsis

Review (21 issues)

IssueSectionTitle
4927.4.2.4Underspecification of ios_base::sync_with_stdio
9121.3.7.9Description of operator>> and getline() for string<> might cause endless loop
11727.6.2.5.2basic_ostream uses nonexistent num_put member functions
16727.6.2.5.4Improper use of traits_type::length()
17923.1Comparison of const_iterators to iterators doesn't work
18217Ambiguous references to size_t
19720.1.5max_size() underspecified
19824.1Validity of pointers and references unspecified after iterator destruction
22822.2Incorrect specification of "..._byname" facets
23017Assignable specified without also specifying CopyConstructible
23217.4.3.1"depends" poorly defined in 17.4.3.1
23524.4.1.1No specification of default ctor for reverse_iterator
23827.7.1.1Contradictory results of stringbuf initialization.
24025.1.5Complexity of adjacent_find() is meaningless
24125.2.8Does unique_copy() require CopyConstructible and Assignable?
24225.2.3Side effects of function objects
25023.2.2.4splicing invalidates iterators
25921.3.4basic_string::operator[] and const correctness
26423.1.2Associative container insert(i, j) complexity requirements are not feasible.
26618.6.2.1bad_exception::~bad_exception() missing Effects clause
267D.7.1.3interaction of strstreambuf::overflow() and seekoff()

Open (25 issues)

IssueSectionTitle
2322.2.2.1.2Num_get overflow result
4427Iostreams use operator== on int_type values
7622.2.1.5Can a codecvt facet always convert one internal character at a time?
9225Incomplete Algorithm Requirements
9623.2.5Vector<bool> is not a container
9824.1.1Input iterator requirements are badly written
10920.3.6Missing binders for non-const sequence elements
11124.5.3.5istreambuf_iterator::equal overspecified, inefficient
12017.4.3.1Can an implementor add specializations?
12326.3.5.4Should valarray helper arrays fill functions be const?
18725.2.2iter_swap underspecified
20024.1.3Forward iterator requirements don't allow constant iterators
20118.2.1Numeric limits terminology wrong
20225.2.8unique() effects unclear when predicate not an equivalence relation
22517.4.4.3std:: algorithms use of other unqualified algorithms
22617.4.3.1User supplied specializations or overloads of namespace std function templates
22917.4.1.1Unqualified references of other library entities
23122.2.2.2.2Precision in iostream?
23323.1.2Insertion hints in associative containers
23925.2.8Complexity of unique() and/or unique_copy incorrect
24723.2.4.3vector, deque::insert complexity
25326.3.2.1valarray helper functions are almost entirely useless
25419.1Exception types in clause 19 are constructed from std::string
25820.1.5Missing allocator requirement
27025.3.3Binary search requirements overly strict

New (41 issues)

IssueSectionTitle
27127.6.1.5basic_iostream missing typedefs
27227.4.4.3Missing parentheses around subexpression
27327Missing ios_base qualification on members of a dependent class
27420.1.5a missing/impossible allocator requirement
27522.2.2.1.1Wrong type in num_get::get() overloads
27623.1Assignable requirement for container value type overly strict
27720.1.5Normative encouragement in allocator requirements unclear
27823.2.2.4What does iterator validity mean?
27923.1const and non-const iterators should have equivalent typedefs
28024.4.1Comparison of reverse_iterator to const reverse_iterator
28125.3.7std::min() and max() requirements overly restrictive
28222.2.2.2.2What types does numpunct grouping refer to?
28325.2.4std::replace() requirement incorrect/insufficient
28420.3.7unportable example in 20.3.7, p6
28527.8.1.6minor editorial errors in fstream ctors
28625.4<cstdlib> requirements missing size_t typedef
28727.4.2.2<cstdlib> conflicting ios_base fmtflags
28819.3<cerrno> requirements missing macro EILSEQ
28926.5<cmath> requirements missing C float and long double versions
29025.1.1Requirements to for_each and its function object
29125.3.5Underspecification of set algorithms
29227.4.4.2effects of a.copyfmt (a)
29325.2.3Order of execution in transform algorithm
29417.4.3.1.1User defined macros and standard headers
29526.5Is abs defined in <cmath>?
29620.2.2Missing descriptions and requirements of pair operators
29720.3.8const_mem_fun_t<>::argument_type should be const T*
29818.4.1.2::operator delete[] requirement incorrect/insufficient
29924.1.4Incorrect return types for iterator dereference
30023.2.2.4list::merge() specification incomplete
30121.3.1basic_string template ctor effects clause omits allocator argument
30222.2.1.5.2Need error indication from codecvt<>::do_length
30323.3.5.3Bitset input operator underspecified
30424.1Must *a return an lvalue when a is an input iterator?
30522.2.1.5.2Default behavior of codecvt<wchar_t, char, mbstate_t>::length()
30618.1offsetof macro and non-POD types
30723.2.3Lack of reference typedefs in container adaptors
30827Table 82 mentions unrelated headers
30927.6Does sentry catch exceptions?
31017.4.1.2Is errno a macro?
31127.6.2.1Incorrect wording in basic_ostream class synopsis

----- End of document -----