考虑到在§21.4中,标准规定了
std::string
类的概述如下,并且考虑到存在一个针对指向char
的指针的std::ostream
上的operator<<
的重载,请注意。namespace std {
template<class charT, class traits = char_traits<charT>,
class Allocator = allocator<charT> >
class basic_string {
public:
[...]
typedef implementation-defined iterator;
typedef implementation-defined const_iterator;
[...]
};
}
最后,鉴于对于Container
概念中iterator
和const_iterator
的要求,在§23.2/4中:
而一个指向 char
的指针将满足他们的需求;我是否正确理解,以下代码是否编译取决于其实现方式?
std::string string = "abc";
std::cout << begin(string);
basic_string
的概要中它们被标记为“实现定义”? - Shoe