【发布时间】:2020-02-14 04:07:01
【问题描述】:
考虑以下程序:
struct A{};
int main()
{
A a;
A b = a;
A c = reinterpret_cast<A>(a);
}
编译器(g++14) 抛出关于invalid cast from type 'A' to type 'A' 的错误。
为什么强制转换为同一类型无效?
【问题讨论】:
-
这是一个有用的问题,因为我也想这样做是出于一个特殊的原因:当解决不支持
if constexpr的旧编译器的问题时,这允许一个虚拟转换对象的机制 (引用)在模板化表达式中引用它自己的已知类型,因此在没有添加许多额外的启用 SFINAE 的辅助函数的情况下仍然可以编译。
标签: c++ c++14 standards reinterpret-cast