【发布时间】:2013-08-29 14:24:29
【问题描述】:
因此,使用 constexpr,MSVC (Visual Studio 2012) 在尝试使用这个简单的程序(包括省略)使用 constexpr 关键字限定我的函数时给了我一个错误:
constexpr int factorial(int n)
{
return n <= 1 ? 1 : (n * factorial(n-1));
}
int main(void)
{
const int fact_three = factorial(3);
std::cout << fact_three << std::endl;
return 0;
}
constexpr 带有红色下划线并带有以下消息:
错误:此声明没有存储类或类型说明符
并尝试编译程序给出以下输出:
1>main.cpp(5): 错误 C2144: 语法错误: 'int' 前面应该有 ';'
1>main.cpp(5):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int
这真的让我很困惑,因为它就是 Cppreference uses to illustrate the use of constexpr 的例子。起初我使用了一个返回文字的简单函数,即constexpr int func(){return 5;},但产生了相同的错误。我将第一条消息解释为“它应该是结构或类的成员函数”,但来自 Cppreference 的示例表明它显然没有必要。
那么,我显然在这里遗漏了什么?
【问题讨论】:
标签: c++ visual-studio-2012 c++11 constexpr