Если я это сделаю:
const char* const_str = "Some string";
char* str = const_cast<char*>(const_str); // (1)
str[0] = "P"; // (2)
Где (в какой строке) точно находится неопределенное поведение?
Я много искал это на SO, но не нашел никаких явных и точный ответ (или, по крайней мере, такой, который я мог бы понять).
Также связано: если я использую внешнюю библиотеку, которая предоставляет такую функцию:
// The documentation states that str will never be modified, just read.
void read_string(char* str);
Можно ли написать что-то вроде:
std::string str = "My string";
read_string(const_cast<char*>(str.c_str()));
Поскольку я знаю наверняка, что read_string ()
никогда не попытается написать на str
?
Спасибо.