Я хотел бы проверить свое понимание и выводы по этому поводу.
В IRC был задан вопрос:
Допустимо ли
const_cast
const
ссылка, привязанная к временному объекту?
Перевод: у него есть ref-to-const привязан к временному объекту, и он хочет отбросить его const
-носпособность, чтобы изменить его.
Я ответил, что ранее я задавал аналогичный вопрос , где, казалось, было достигнуто согласие о том, что сами временные объекты не являются по своей природе const
, и, таким образом, вы можете отбросить const
-ность ссылки, которую вы имеете на них, и измените их с помощью результата. И пока существует исходная ссылка на- const
, это не повлияет на время жизни временного.
То есть:
int main()
{
const int& x = int(3);
int& y = const_cast(x);
y = 4;
cout << x;
}
// Output: 4
// ^ Legal and safe
Я прав?
(Конечно, целесообразен ли такой код - совсем другой вопрос!)