[英]C++ error: Call to non-constexpr function
我正在尝试编译以下 C++ 代码(另存为 example4.cpp)
#include <iostream>
using namespace std;
constexpr double nth(double x, int n);//initialization
int main()
{
double x=2;
int n=5;
nth(x,n);//Function call
return 0;
}
constexpr double nth(double x, int n) // function definition
{
double res = 1;
int i = 0;
while (i<n) { // while-loop: do while the condition is true
res*=x;
++i;
}
cout << res;
cout << endl;
return res;
}
此代码给出以下错误:
example4.cpp:在函数'constexpr double nth(double, int)'中:example4.cpp:24:9:错误:调用非constexpr函数'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream <_CharT, _Traits>::operator<<(double) [with _CharT = char; _Traits = std::char_traits; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream]' cout << res;
任何人都可以请建议吗?
谢谢你。
在constexpr
函数中不允许流式传输到std::cout
。 事实上,只有有限的一组东西是。 阅读关于constexpr
的cppreference 文章。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.