鑑於的operator<<
上std::ostream
用於指針的過載到char
存在,並考慮到該標準規定了std::string
類的簡介是以下內容,在§21.4:`std :: string :: iterator`保證不是指向char的指針嗎?
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;
[...]
};
}
最後鑑於要求爲iterator
和const_iterator
用於Container
概念是,在§23.2/ 4:
和一個指向char
會滿足他們;我是否正確地閱讀它,它的實現定義是否編譯下面的代碼?
std::string string = "abc";
std::cout << begin(string);
它不是** _implementation defined_:執行是_not_所需的文件迭代器的類型。但是,實現是_allowed_使用類或指針類型。 –
@DietmarKühl如果迭代器的類型不是實現定義的,那麼爲什麼在'basic_string'的大綱中標記爲「* implementation-defined *」? – Shoe
根據您在帖子中已經描述的內容,我會在帖子中對您的問題說「是」,對標題中的問題說「不」。 –