【问题标题】:Why does adding constexpr make VS2013 reject this?为什么添加 constexpr 会使 VS2013 拒绝这个?
【发布时间】:2017-12-13 07:17:57
【问题描述】:

此代码无法在 Visual Studio 2013 中编译

template <typename X> 
constexpr //error C2144: syntax error : 'bool' should be preceded by ';'
bool Test(X x)
{
    return true;
}

但是,如果我删除 constexpr 关键字,它会编译。

但是constexpr 应该没问题吧?因为它总是返回 true。

出了什么问题?

【问题讨论】:

标签: c++ templates visual-studio-2013 constexpr


【解决方案1】:

尽管名称中有 2013,但 VS2013 并不声称是针对 C++11 标准的编译器(这是在引入 constexpr 时)。

对于 C++11 编译器,__cplusplus 的值将是 201103L

因此,您的编译器遇到了它无法识别的标记,并发出诊断信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    相关资源
    最近更新 更多