После С++ 11 я думал о c_str()
и data()
одинаково.
С++ 17 вводит перегрузку для последнего, которая возвращает неконстантный указатель (ссылка, в которой я не уверен, полностью ли он обновился по сравнению с С++ 17):
const CharT* data() const; (1)
CharT* data(); (2) (since C++17)
c_str()
возвращает только постоянный указатель:
const CharT* c_str() const;
Почему дифференциация этих двух методов в С++ 17, особенно когда С++ 11 был тем, который сделал их однородными? Другими словами, почему только один метод получил перегрузку, а другой нет?