下面的代码生成在Visual Studio 2010(其中alias_wchar_t是wchar_t的别名)警告C4127(条件表达式是常数):C4127:条件表达式是恒定
if (sizeof(alias_wchar_t) == sizeof(wchar_t)) // warning occurs here
{
// do stuff
}
else
{
// do other stuff
}
什么来解决这个最优雅的方式,压制警告?
我想出的最佳解决方案是将条件填充到静态布尔中,并将其用作条件。有上面和下面的if-else,所以我换了整个事情的括号来限制变量尽可能的范围代码可遇不可求量:
这种感觉相当总值虽然。这看起来应该可以在编译时而不是运行时解析,但预处理器不知道sizeof。有没有更清洁,更优雅的方式来解决这个问题?
note:C++ 17正在考虑类似'如果constexpr'来解决这个问题 – 2016-03-22 05:12:27