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

时间:2017-12-13 07:17:58

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

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

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

但是,如果删除constexpr关键字,则会进行编译。

constexpr不应该成为一个问题吗?因为它总是返回真实。

出了什么问题?

1 个答案:

答案 0 :(得分:3)

尽管2013年的名称,VS2013并不是一个针对C ++ 11标准的编译器(当<dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jdbc</artifactId> <version>4.0.4</version> <scope>compile</scope> <optional>true</optional> </dependency> 被引入时)。

对于C ++ 11编译器,constexpr的值为__cplusplus

因此,您的编译器会遇到它无法识别的令牌,并发出诊断信息。