因此,在尝试使用 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 的例子用于说明使用constexpr http://en.cppreference.com/w/cpp/language/constexpr。起初,我使用了一个返回文字的简单函数,即constexpr int func(){return 5;}
,但产生了相同的错误。我将第一条消息解释为“它应该是结构或类的成员函数”,但 Cppreference 中的示例表明它显然没有必要。
那么,我在这里明显缺少什么?
很简单 - 因为 Visual Studio 不支持constexpr
(之前视觉工作室 2015 https://msdn.microsoft.com/en-us/library/dn956974.aspx).
请注意,MSVC++11 是 Visual Studio 2012; VC++10 是 Visual Studio 2010。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)