Следующая программа пытается построить вторую строку, используя первую строку, и указатель в середину первой строки:
#include <string>
int main() {
std::string src = "hello world";
const char* end = &src[5];
std::string dest(src.data(), end);
}
В С++ 14 и ранее это работает. Но в С++ 17 сбой вызова:
error: no matching function for call to ‘std::__cxx11::basic_string<char>::basic_string(char*, const char*&)’
std::string dest(src.data(), end);
[... full output omitted ...]
Что изменилось, чтобы это не удалось?