Visual Studio 2022中reinterpret_cast右值引用报错是否为MSVC Bug?
MSVC编译reinterpret_cast代码触发错误是否属于编译器Bug?
int i; reinterpret_cast<int &&>( std::move( i ) );
这段代码在Visual Studio 2022中编译时会触发如下错误:
error C2102: '&' requires l-value
但GCC和Clang均能正常编译通过这段代码。
这确实属于MSVC的编译器Bug。
原因在于:std::move(i)的返回类型本身就是int&&,根据C++标准,允许对右值执行reinterpret_cast转换到对应的右值引用类型——哪怕源表达式已经是该类型的右值。MSVC此处错误地将该场景判定为需要左值的操作,才抛出了不符合预期的C2102错误。
内容的提问来源于stack exchange,提问作者Fedor
相关产品推荐
相关产品推荐

