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                       ]