为什么添加 constexpr 会使 VS2013 拒绝这个?

Why does adding constexpr make VS2013 reject this?

此代码无法在 Visual Studio 2013

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

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

但是constexpr应该不是问题吧?因为它总是 returns true.

出了什么问题?

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

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

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