【发布时间】:2020-05-21 16:56:40
【问题描述】:
众所周知,以下示例表现出未定义的行为:
T const x = T();
T& r = any_suitable_conversion_to_Tref(x); // fine
r = T(); // UB
cppreference 已确认 const_cast:
const_cast 可以形成指向实际引用 const 对象的非 const 类型的引用或指针,或实际引用 volatile 对象的非易失类型的引用或指针。通过非 const 访问路径修改 const 对象并通过非易失性左值引用易失性对象会导致未定义的行为。
但是,它没有说明例如c 风格的转换,它不引用标准(cppreference 通常从不引用)。
C++ 标准究竟在哪里禁止这样做?
【问题讨论】:
标签: c++ object language-lawyer constants