Section: 23.2.2 [container.requirements.general] Status: New Submitter: Matt Austern Opened: 2013-06-26 Last modified: 2016-01-28
Priority: 4
View other active issues in [container.requirements.general].
View all other issues in [container.requirements.general].
View all issues with New status.
Discussion:
Consider the following code snippet:
#include <vector> #include <algorithm> int main() { std::vector<int> v1(100, 3); std::vector<int> v2(100); copy(v1.begin(), v1.end(), v2.begin()); }
It compiles without error on my desktop. Is it required to? I can't find evidence from the standard that it is.
In my test std::copy
was found by argument-dependent lookup because the implementation I used made
std::vector<int>::iterator
a user-defined type defined in namespace std
. But the standard
only requires std::vector<int>::iterator
to be an implementation specified random access iterator
type. I can't find anything requiring it to be a user-defined type at all (and in fact there are reasonable implementation
where it isn't), let alone a user defined type defined in a specific namespace.
Since the defining namespace of container iterators is visible to users, should the standard say anything about what that namespace is?
Proposed resolution: