= const_cast<int*>(&x);
*p = 15;
}
int main() {
int x = 10;
foo(x);
std::cout << x << '\n';
}
Вот такой кот ок ?
Смотри выше
там вроде ответа нет. Уб это или так можно, объкт то не конст объявлен
Нет, не ок
Опять ответы расходятся. Можно пруфы ?
Ты говоришь не ок, кто-то пишет ок
Не ок, там const cast
всякий const_cast не ок?
В общем, нет, но тут то он нафига?
Вообще да, всякий const cast - это повод подумать как сделать лучше, без него
У меня объект объявлен не конст. Меня вот интересует могу ли я писать в него если передам его в ф-ю по конст.ссылке
А почему бы не передать его по обычной, не const, ссылке? Впрочем у Гугла в кодстайлах, на сколько я помню, если параметр нужно поменять в функции, то его рекомендуется передавать по указателю
Нет. Передай по неконстантной ссылке если надо менять. Зачем самого себя обманывать?
Это меня не интересует. Мне интересно уб это или нет
А можно ссылку на стандарт ?
Ой ну сам найди
Нет же Модификация изначально неконст объекта через конст_каст константной ссылки / указателя работает
Так а кто там знает, константный он или нет?
Формально да, ты прав, Но нафига?
Ещё раз. Формально в этом примере нет UB, все ок. Но я предполагал, что это лишь пример, и в реальности функция foo будет вызываться много раз и из неконтролируемого числа мест, где может в параметр попасть и реальная константа
Обсуждают сегодня