C++ Standard Library Issues List (Revision 23)

Index by Status

Reference ISO/IEC IS 14882:1998(E)

This document is the Index by Status for the Library Active Issues List, Library Defect Reports List, and Library Closed Issues List.

Also see:

Index by Status

TC (125 issues)

Issue Section Title
1 17.4.2.2 C library linkage editing oversight
3 18.3 Atexit registration during atexit() call is not described
5 21.3.6.8 String::compare specification questionable
7 21 String clause minor problems
8 22.1.1.5 Locale::global lacks guarantee
9 18.4.1 Operator new(0) calls should not yield the same pointer
11 23.3.5 Bitset minor problems
13 27.6.1.2.3 Eos refuses to die
14 22.1.1.3 Locale::combine should be const
15 22.1.1.3 Locale::name requirement inconsistent
16 22.2.1.4 Bad ctype_byname<char> decl
17 22.2.2.1.2 Bad bool parsing
18 22.2.2.1.1 Get(...bool&) omitted
19 22.2.1.5.2 "Noconv" definition too vague
20 22.2.3.1.2 Thousands_sep returns wrong type
21 22.1.1.1.1 Codecvt_byname<> instantiations
22 27.8.1.7 Member open vs. flags
24 22.2.1.5.2 "do_convert" doesn't exist
25 21.3.7.9 String operator<< uses width() value wrong
26 27.6.1.1.2 Bad sentry example
27 21.3.5.5 String::erase(range) yields wrong iterator
28 22.2.1.3.2 Ctype<char>is ambiguous
29 27.3.1 Ios_base::init doesn't exist
30 22.1.1.1.1 Wrong header for LC_*
31 22.1.1 Immutable locale values
32 27.5.2.4.4 Pbackfail description inconsistent
33 22.2.1.5.2 Codecvt<> mentions from_type
34 22.2.2.2.2 True/falsename() not in ctype<>
35 27.4 No manipulator unitbuf in synopsis
36 27.4.2.5 Iword & pword storage lifetime omitted
37 22.1.1 Leftover "global" reference
38 22.1.2 Facet definition incomplete
39 24.5.3.4 istreambuf_iterator<>::operator++(int) definition garbled
40 22.2.8 Meaningless normative paragraph in examples
41 27.4.2 Ios_base needs clear(), exceptions()
42 21.3 String ctors specify wrong default allocator
46 D.7 Minor Annex D errors
47 27.4.2.3 Imbue() and getloc() Returns clauses swapped
48 27.4.2.1.1 Use of non-existent exception constructor
50 27.4.2 Copy constructor and assignment operator of ios_base
51 23.1 Requirement to not invalidate iterators missing
52 27.4.3.2 Small I/O problems
53 27.4.4.1 Basic_ios destructor unspecified
54 27.5.2.1 Basic_streambuf's destructor
55 27 Invalid stream position is undefined
56 27.5.2 Showmanyc's return type
57 21.1.3.2 Mistake in char_traits
59 27.5.2.3.1 Ambiguity in specification of gbump
60 27.6.1.2.1 What is a formatted input function?
61 27.6.1.3 Ambiguity in iostreams exception policy
62 27.6.1.3 Sync's return value
63 27.6.2.6 Exception-handling policy for unformatted output
64 27.6.1.2.3 Exception handling in basic_istream::operator>>(basic_streambuf*)
66 D.7.1.3 Strstreambuf::setbuf
68 27.6.1.2.3 Extractors for char* should store null at end
69 23.2.4 Must elements of a vector be contiguous?
70 18.6 Uncaught_exception() missing throw() specification
71 22.2.5.1 Do_get_monthname synopsis missing argument
74 22.2.1.5.2 Garbled text for codecvt::do_max_length
75 22.2.1.5 Contradiction in codecvt::length's argument types
78 27.4.2 Typo: event_call_back
79 26.2.1 Inconsistent declaration of polar()
80 26.2.1 Global Operators of complex declared twice
83 21.3 String::npos vs. string::max_size()
86 21.3.1 String constructors don't describe exceptions
90 21.3.7.9 Incorrect description of operator >> for strings
106 26.3.5 Numeric library private members are implementation defined
108 18.6.1 Lifetime of exception::what() return unspecified
110 24.5.3 istreambuf_iterator::equal not const
112 24.5.4.1 Minor typo in ostreambuf_iterator constructor
114 18.4.1.3 Placement forms example in error twice
115 D.7.4.1 Typo in strstream constructors
119 17.4.4.8 Should virtual functions be allowed to strengthen the exception specification?
122 27.5.2 streambuf/wstreambuf description should not say they are specializations
124 22.2.1.2 ctype_byname<charT>::do_scan_is & do_scan_not return type should be const charT*
125 26.3.2 valarray<T>::operator!() return type is inconsistent
126 22.2.1.1.2 typos in Effects clause of ctype::do_narrow()
127 20.4.5 auto_ptr<> conversion issues
129 27.6.1.3 Need error indication from seekp() and seekg()
132 23.2.2.2 list::resize description uses random access iterators
133 23.3.1 map missing get_allocator()
134 23.2.4.1 vector constructors over specified
137 22.1.1 Do use_facet and has_facet look in the global locale?
139 23.1.1 Optional sequence operation table description unclear
141 21.3.6.4 basic_string::find_last_of, find_last_not_of say pos instead of xpos
142 25.3.8 lexicographical_compare complexity wrong
144 23.2.1.1 Deque constructor complexity wrong
146 26.2.6 complex<T> Inserter and Extractor need sentries
147 17.4.4.3 Library Intro refers to global functions that aren't global
148 22.2.8 Functions in the example facet BoolNames should be const
150 25.1.4 Find_first_of says integer instead of iterator
151 23.1.1 Can't currently clear() empty container
152 22.2.1.1.2 Typo in scan_is() semantics
154 22.2.2.1.2 Missing double specifier for do_get()
155 27.3 Typo in naming the class defining the class Init
156 27.4.2.3 Typo in imbue() description
158 27.5.2.4.2 Underspecified semantics for setbuf()
159 27.5.2.4.3 Strange use of underflow()
160 27.6.1.1 Typo: Use of non-existing function exception()
161 27.6.1.2.2 Typo: istream_iterator vs. istreambuf_iterator
164 22.2.5.3.2 do_put() has apparently unused fill argument
168 27.6.2.6 Typo: formatted vs. unformatted
169 27.7.1.3 Bad efficiency of overflow() mandated
170 27.7.4 Inconsistent definition of traits_type
172 27.6.1.3 Inconsistent types for basic_istream::ignore()
173 27.8.1.4 Inconsistent types for basic_filebuf::setbuf()
174 D.6 Typo: OFF_T vs. POS_T
175 D.6 Ambiguity for basic_streambuf::pubseekpos() and a few other functions.
176 D.6 exceptions() in ios_base...?
181 20.2.2 make_pair() unintended behavior
189 27.4.2.2 setprecision() not specified correctly
193 25.3.6 Heap operations description incorrect
195 27.6.1.1.2 Should basic_istream::sentry's constructor ever set eofbit?
199 20.1.5 What does allocate(0) return?
208 24.1 Unnecessary restriction on past-the-end iterators
209 21.3 basic_string declarations inconsistent
210 25 distance first and last confused
211 21.3.7.9 operator>>(istream&, string&) doesn't set failbit
212 25.3.7 Empty range behavior unclear for several algorithms
217 22.2.8 Facets example (Classifying Japanese characters) contains errors
220 27.4.2.7 ~ios_base() usage valid?
222 17.3.1.3 Are throw clauses necessary if a throw is already implied by the effects clause?
223 25.2.9 reverse algorithm should use iter_swap rather than swap
224 23.1.2 clear() complexity for associative containers refers to undefined N
227 25.2.2 std::swap() should require CopyConstructible or DefaultConstructible arguments

DR (81 issues)

Issue Section Title
49 27.4.2.4 Underspecification of ios_base::sync_with_stdio
76 22.2.1.5 Can a codecvt facet always convert one internal character at a time?
103 23.1.2 set::iterator is required to be modifiable, but this allows modification of keys
109 20.3.6 Missing binders for non-const sequence elements
117 27.6.2.5.2 basic_ostream uses nonexistent num_put member functions
118 27.6.1.2.2 basic_istream uses nonexistent num_get member functions
136 27.6.1.3 seekp, seekg setting wrong streams?
153 22.2.1.3.2 Typo in narrow() semantics
165 27.6.2.1 xsputn(), pubsync() never called by basic_ostream members?
171 27.8.1.4 Strange seekpos() semantics due to joint position
182 17 Ambiguous references to size_t
183 27.6.3 I/O stream manipulators don't work for wide character streams
184 18.2.1.5 numeric_limits<bool> wording problems
185 20.3 Questionable use of term "inline"
186 23.3.5.2 bitset::set() second parameter should be bool
198 24.1 Validity of pointers and references unspecified after iterator destruction
214 23.3.3 set::find() missing const overload
221 22.2.2.1.2 num_get<>::do_get stage 2 processing broken
228 22.2 Incorrect specification of "..._byname" facets
230 17 Assignable specified without also specifying CopyConstructible
232 17.4.3.1 "depends" poorly defined in 17.4.3.1
234 20.4.1.1 Typos in allocator definition
235 24.4.1.1 No specification of default ctor for reverse_iterator
237 23.2.2.1 Undefined expression in complexity specification
238 27.7.1.1 Contradictory results of stringbuf initialization.
239 25.2.8 Complexity of unique() and/or unique_copy incorrect
240 25.1.5 Complexity of adjacent_find() is meaningless
242 25.2.3 Side effects of function objects
243 27.6.1.3 get and getline when sentry reports failure
248 22.2.5 time_get fails to set eofbit
250 23.2.2.4 splicing invalidates iterators
251 27.7.1 basic_stringbuf missing allocator_type
252 27.7 missing casts/C-style casts used in iostreams
256 27.4.4.2 typo in 27.4.4.2, p17: copy_event does not exist
259 21.3.4 basic_string::operator[] and const correctness
260 24.5.1.2 Inconsistent return type of istream_iterator::operator++(int)
261 24.5.1.2 Missing description of istream_iterator::operator!=
262 17.3.2.1.2 Bitmask operator ~ specified incorrectly
263 21.3 Severe restriction on basic_string reference counting
264 23.1.2 Associative container insert(i, j) complexity requirements are not feasible.
265 20.2.2 std::pair::pair() effects overly restrictive
266 18.6.2.1 bad_exception::~bad_exception() missing Effects clause
268 22.1.1 Typo in locale synopsis
270 25.3.3 Binary search requirements overly strict
271 27.6.1.5 basic_iostream missing typedefs
272 27.4.4.3 Missing parentheses around subexpression
273 27 Missing ios_base qualification on members of a dependent class
274 20.1.5 a missing/impossible allocator requirement
275 22.2.2.1.1 Wrong type in num_get::get() overloads
276 23.1 Assignable requirement for container value type overly strict
281 25.3.7 std::min() and max() requirements overly restrictive
284 20.3.7 unportable example in 20.3.7, p6
285 27.8.1.6 minor editorial errors in fstream ctors
286 25.4 <cstdlib> requirements missing size_t typedef
288 19.3 <cerrno> requirements missing macro EILSEQ
292 27.4.4.2 effects of a.copyfmt (a)
295 26.5 Is abs defined in <cmath>?
297 20.3.8 const_mem_fun_t<>::argument_type should be const T*
298 18.4.1.2 ::operator delete[] requirement incorrect/insufficient
301 21.3.1 basic_string template ctor effects clause omits allocator argument
303 23.3.5.3 Bitset input operator underspecified
306 18.1 offsetof macro and non-POD types
307 23.2.3 Lack of reference typedefs in container adaptors
308 27 Table 82 mentions unrelated headers
310 17.4.1.2 Is errno a macro?
311 27.6.2.1 Incorrect wording in basic_ostream class synopsis
312 20 Table 27 is missing headers
315 23.2.2.4 Bad "range" in list::unique complexity
316 23.1.2 Vague text in Table 69
317 22 Instantiation vs. specialization of facets
318 22.2.3.2 Misleading comment in definition of numpunct_byname
319 18.4.1.1 Storage allocation wording confuses "Required behavior", "Requires"
321 22.2.2.1.2 Typo in num_get
322 23.1 iterator and const_iterator should have the same value type
327 22.1.1.1.1 Typo in time_get facet in table 52
328 22.2.6.2.2 Bad sprintf format modifier in money_put<>::do_put()
331 27.4.2.1.1 bad declaration of destructor for ios_base::failure
335 21.1.1 minor issue with char_traits, table 37
337 25.2.4 replace_copy_if's template parameter should be InputIterator
345 21.4 type tm in <cwchar>
346 24.1 Some iterator member functions should be const

Dup (16 issues)

Issue Section Title
10 22.2.1.5.2 Codecvt<>::do unclear
43 22.2.1.5.2 Locale table correction
67 21.3.7.9 Setw useless for strings
72 22.2.1.5 Do_convert phantom member function
87 21.3.6.8 Error in description of string::compare()
89 21.3.5.4 Missing throw specification for string::insert() and string::replace()
102 23.1.2 Bug in insert range in associative containers
157 27.4.2.5 Meaningless error handling for pword() and iword()
162 27.6.1.2.3 Really "formatted input functions"?
163 27.6.1.3 Return of gcount() after a call to gcount
166 27.6.2.5.3 Really "formatted output functions"?
196 18.4.1.3 Placement new example has alignment problems
207 22.2.1.3.2 ctype<char> members return clause incomplete
216 27.6.3 setbase manipulator description flawed
236 22.2.1.3.2 ctype<char>::is() member modifies facet
246 23.1.2 a.insert(p,t) is incorrectly specified

NAD (76 issues)

Issue Section Title
2 20.4.5.3 Auto_ptr conversions effects incorrect
4 21.3 Basic_string size_type and difference_type should be implementation defined
6 27.4.3 File position not an offset unimplementable
12 20.1.5 Way objects hold allocators unclear
45 27.7.3 Stringstreams read/write pointers initial position unclear
58 27.6.1.2.3 Extracting a char from a wide-oriented stream
65 D.7.1.3 Underspecification of strstreambuf::seekoff
73 27.8.1 is_open should be const
77 26.3.2.3 Valarray operator[] const returning value
81 26.3.5 Wrong declaration of slice operations
82 23.1.2 Missing constant for set elements
84 21.3.5 Ambiguity with string::insert()
85 21 String char types
88 21.3.5.4 Inconsistency between string::insert() and string::append()
93 26.3 Incomplete Valarray Subset Definitions
94 17.4.4 May library implementors add template parameters to Standard Library classes?
95 17.4.4.4 Members added by the implementation
97 23 Insert inconsistent definition
99 24.4.1.3.13 Reverse_iterator comparisons completely wrong
100 24.4.2 Insert iterators/ostream_iterators overconstrained
101 23.2.4 No way to free storage for vector and deque
104 21.3.4 Description of basic_string::operator[] is unclear
105 27.8 fstream ctors argument types desired
107 26.3.2 Valarray constructor is strange
111 24.5.3.5 istreambuf_iterator::equal overspecified, inefficient
113 27.6.1.1 Missing/extra iostream sync semantics
116 23.3.5 bitset cannot be constructed with a const char*
121 22.1.1.1.1 Detailed definition for ctype<wchar_t> specialization
128 27.7 Need open_mode() function for file stream, string streams, file buffers, and string  buffers
130 23.1.2 Return type of container::erase(iterator) differs for associative containers
131 23.2.2.4 list::splice throws nothing
135 27.6.1.5.1 basic_iostream doubly initialized
138 22.2.1.4 Class ctype_byname<char> redundant and misleading
140 23.3.1 map<Key, T>::value_type does not satisfy the assignable requirement
143 D.5 C .h header wording unclear
145 27.4.4.1 adjustfield lacks default value
149 23.1.1 Insert should return iterator to first element inserted
177 26.2.6 Complex operators cannot be explicitly instantiated
178 27.3.1 Should clog and cerr initially be tied to cout?
180 23 Container member iterator arguments constness has unintended consequences
188 26.3.2.6 valarray helpers missing augmented assignment operators
190 25.3.7 min() and max() functions should be std::binary_functions
191 25.3.3 Unclear complexity for algorithms such as binary search
192 23.1.2 a.insert(p,t) is inefficient and overconstrained
194 27.4.4 rdbuf() functions poorly specified
203 27.6.1.1.2 basic_istream::sentry::sentry() is uninstantiable with ctype<user-defined type>
204 24.3.4 distance(first, last) when "last" is before "first"
205 18.2.1.2 numeric_limits unclear on how to determine floating point types
206 18.4.1.1 operator new(size_t, nothrow) may become unlinked to ordinary operator new if ordinary version replaced
213 26.5 Math function overloads ambiguous
215 23.1.2 Can a map's key_type be const?
218 25.3 Algorithms do not use binary predicate objects for default comparisons
219 25.1.2 find algorithm missing version that takes a binary predicate argument
244 25.1.2 Must find's third argument be CopyConstructible?
245 24.5.1 Which operations on istream_iterator trigger input operations?
249 20.4.5 Return Type of auto_ptr::operator=
255 27.5.2 Why do basic_streambuf<>::pbump() and gbump() take an int?
257 20.3.1 STL functional object and iterator inheritance.
267 D.7.1.3 interaction of strstreambuf::overflow() and seekoff()
269 18.7 cstdarg and unnamed parameters
277 20.1.5 Normative encouragement in allocator requirements unclear
279 23.1 const and non-const iterators should have equivalent typedefs
287 27.4.2.2 conflicting ios_base fmtflags
289 26.5 <cmath> requirements missing C float and long double versions
293 25.2.3 Order of execution in transform algorithm
296 20.2.2 Missing descriptions and requirements of pair operators
302 22.2.1.5.2 Need error indication from codecvt<>::do_length
313 18.6.3.3 set_terminate and set_unexpected question
314 18.6.3.3 Is the stack unwound when terminate() is called?
326 22.2.6.4 Missing typedef in moneypunct_byname
330 22.1.1 Misleading "exposition only" value in class locale definition
332 27.4.3 Consider adding increment and decrement operators to std::fpos< T >
343 21 Unspecified library header dependencies
344 22.2.2 grouping + showbase
351 20.3 unary_negate and binary_negate: struct or class?
353 20.2.2 std::pair missing template assignment

Ready (20 issues)

Issue Section Title
91 21.3.7.9 Description of operator>> and getline() for string<> might cause endless loop
123 26.3.5.4 Should valarray helper arrays fill functions be const?
179 23.1 Comparison of const_iterators to iterators doesn't work
200 24.1.3 Forward iterator requirements don't allow constant iterators
202 25.2.8 unique() effects unclear when predicate not an equivalence relation
241 25.2.8 Does unique_copy() require CopyConstructible and Assignable?
253 26.3.2.1 valarray helper functions are almost entirely useless
305 22.2.1.5.2 Default behavior of codecvt<wchar_t, char, mbstate_t>::length()
320 23.2.2.1 list::assign overspecified
324 24.1.2 Do output iterators have value types?
325 22.2.6.3.2 Misleading text in moneypunct<>::do_grouping
329 23.2.4.2 vector capacity, reserve and reallocation
333 27.6.2.7 does endl imply synchronization with the device?
334 23.3.1.2 map::operator[] specification forces inefficient implementation
338 22.2 is whitespace allowed between `-' and a digit?
339 22.2.1 definition of bitmask type restricted to clause 27
340 22.1.1.1.1 interpretation of has_facet<Facet>(loc)
341 23.2.4.2 Vector reallocation and swap
349 24.5.2 Minor typographical error in ostream_iterator
354 23.1.2 Associative container lower/upper bound requirements

Review (7 issues)

Issue Section Title
225 17.4.4.3 std:: algorithms use of other unqualified algorithms
226 17.4.3.1 User supplied specializations or overloads of namespace std function templates
229 17.4.1.1 Unqualified references of other library entities
231 22.2.2.2.2 Precision in iostream?
282 22.2.2.2.2 What types does numpunct grouping refer to?
291 25.3.5 Underspecification of set algorithms
355 23.1.1 Operational semantics for a.back()

Open (31 issues)

Issue Section Title
23 22.2.2.1.2 Num_get overflow result
44 27 Iostreams use operator== on int_type values
92 25 Incomplete Algorithm Requirements
96 23.2.5 Vector<bool> is not a container
98 24.1.1 Input iterator requirements are badly written
120 17.4.3.1 Can an implementor add specializations?
167 27.6.2.5.4 Improper use of traits_type::length()
187 25.2.2 iter_swap underspecified
197 20.1.5 max_size() underspecified
201 18.2.1 Numeric limits terminology wrong
233 23.1.2 Insertion hints in associative containers
247 23.2.4.3 vector, deque::insert complexity
254 19.1 Exception types in clause 19 are constructed from std::string
258 20.1.5 Missing allocator requirement
278 23.2.2.4 What does iterator validity mean?
280 24.4.1 Comparison of reverse_iterator to const reverse_iterator
283 25.2.4 std::replace() requirement incorrect/insufficient
290 25.1.1 Requirements to for_each and its function object
294 17.4.3.1.1 User defined macros and standard headers
299 24.1.4 Incorrect return types for iterator dereference
300 23.2.2.4 list::merge() specification incomplete
304 24.1 Must *a return an lvalue when a is an input iterator?
309 27.6 Does sentry catch exceptions?
323 26.5 abs() overloads in different headers
336 17 Clause 17 lack of references to deprecated headers
342 27.6.1.3 seek and eofbit
347 22.1.1.1.1 locale::category and bitmask requirements
348 20.2.2 Minor issue with std::pair operator<
350 20.4.1.1 allocator<>::address
352 21.1.2 missing fpos requirements
357 26.5 <cmath> float functions cannot return HUGE_VAL

New (26 issues)

Issue Section Title
356 22.2.1 Meaning of ctype_base::mask enumerators
358 22.2.2.1.2 interpreting thousands_sep after a decimal_point
359 22.2.2.2.1 num_put<>::do_put (..., bool) undocumented
360 22.1.1 locale mandates inefficient implementation
361 22.2.2.2.2 num_get<>::do_get (..., void*&) checks grouping
362 20.3.6.2 bind1st/bind2nd type safety
363 27.4.2.1.1 Missing exception specification in 27.4.2.1.1
364 27.5.2.4.2 Inconsistent wording in 27.5.2.4.2
365 27 Lack of const-qualification in clause 27
366 27 Excessive const-qualification
367 25.2.7 remove_copy/remove_copy_if and Input Iterators
368 21.3.5.6 basic_string::replace has two "Throws" paragraphs
369 27.3 io stream objects and static ctors
370 27.6.1.3 Minor error in basic_istream::get
371 23.1 Stability of multiset and multimap member functions
372 17.4.4.8 Inconsistent description of stdlib exceptions
373 27.6.1.2.1 Are basic_istream and basic_ostream to use (exceptions()&badbit) != 0 ?
374 22.2.6.3.1 moneypunct::frac_digits returns int not unsigned
375 27.7.1.3 basic_ios should be ios_base in 27.7.1.3
376 27.7.1.3 basic_streambuf semantics
377 21.3.5.4 basic_string::insert and length_error
378 22.1.1 locale immutability and locale::operator=()
379 22.2.1.1.2 nonsensical ctype::do_widen() requirement
380 22.2.1.5.2 typos in codecvt tables 53 and 54
381 22.2.1.5.2 detection of invalid mbstate_t in codecvt
382 22.2.1.5 codecvt do_in/out result

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