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