为什么reinterpret_cast不能将int转换为int?

时间:2013-09-18 08:38:59

标签: c++ pointers integer type-conversion reinterpret-cast

我的编译器是最新的VC ++ 2013 RC。

void f()
{
    int n1 = 0;
    int n2 = reinterpret_cast<int>(n1); // error C2440
}
  

错误C2440:'reinterpret_cast':无法从'int'转换为'int'

为什么在这种明显的情况下不能使用reinterpret_cast?

2 个答案:

答案 0 :(得分:29)

According到cppreference.com,以下转换仅在C ++ 11之后可用:

  

成员,枚举,指针或指向成员的指针的表达式   type可以转换为自己的类型。结果值相同   作为表达的价值。

还在Visual Studio 2013 RC中may not be implemented

答案 1 :(得分:24)

C ++标准说(5.2.10.2)(强调我的):

  

reinterpret_cast运算符不应丢弃constness(5.2.11)。 可以将整数,枚举,指针或指向成员类型的表达式显式转换为自己的类型;这样的演员阵容产生了   其操作数的值。

所以我说这是一个错误。