Где неопределенное поведение при использовании const_cast<>? [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Где неопределенное поведение при использовании const_cast<>? [дубликат]

Сообщение Anonymous »

Если да:

Код: Выделить всё

const char* const_str = "Some string";

char* str = const_cast(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(str.c_str()));
Поскольку я точно знаю, что read_string() никогда не попытается записать в str ?

Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/553 ... const-cast
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»