Правильно ли я говорю, что const_cast с последующей модификацией ссылки ref-to-const на временный - это нормально?

Я хотел бы проверить свое понимание и выводы по этому поводу.


В 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

Я прав?


(Конечно, целесообразен ли такой код - совсем другой вопрос!)

19
задан Community 23 May 2017 в 11:44
поделиться