Topic: Defect report: Container iterator constructor and explicit convertibility
Author: =?iso-8859-1?B?Sm9hcXXtbiBNIEzzcGV6IE118W96?= <joaquin@tid.es>
Date: Sat, 17 Dec 2005 15:55:48 +0000 (UTC) Raw View
[moderator: I posted on this subject yesterday, this is a reformulation
so that it's accepted as a valid DR submission]
[moderator's note: Forwarded to C++ Committee. -sdc]
The iterator constructor X(i,j) for containers as defined in 23.1.1 and
23.2.2 does only require that i and j be input iterators but
nothing is said about their associated value_type. There are three
sensible
options:
1. iterator's value_type is exactly X::value_type (modulo cv).
2. iterator's value_type is *implicitly* convertible to X::value_type.
3. iterator's value_type is *explicitly* convertible to X::value_type.
The issue has practical implications, and stdlib vendors have
taken divergent approaches to it: Dinkumware follows 2,
libstdc++ follows 3.
The same problem applies to the definition of insert(p,i,j) for
sequences and insert(i,j) for associative contianers, as well as
assign.
Joaqu n M L pez Mu oz
Telef nica, Investigaci n y Desarrollo
[ comp.std.c++ is moderated. To submit articles, try just posting with ]
[ your news-reader. If that fails, use mailto:std-c++@ncar.ucar.edu ]
[ --- Please see the FAQ before posting. --- ]
[ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html ]