当前位置: 首页 > 知识库问答 >
问题:

C错误:调用非constexpr函数

洪高刚
2023-03-14

我正在尝试编译以下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:在函数'Conconexpr double nth(double, int)':example4.cpp:24: 9: error:调用非Conconexpr函数'std::basic_ostream

谁能推荐一下吗?

谢谢你。

共有1个答案

东门晟
2023-03-14

constepr 函数 上下文中,不允许流式传输到std::cout。事实上,只有有限的一组东西是正确的。阅读constexpr上的CPP参考文章。

 类似资料:
  • 看看这段代码: < code>Foo有一个成员< code > Foo::bar::nonConstexpr ,它有一个非Constexpr构造函数。所以,我的期望是,这不应该编译。但是它用gcc,clang和msvc编译。这是编译器的bug,还是某个规则允许这段代码编译? 如果我直接将 成员添加到 中,代码将不再编译。 (我遇到了这个问题,因为我期望对全局对象进行静态初始化,但它得到了动态初始化

  • 我在使用g-12时遇到了一个错误,它在clang-13中没有出现。特别是,这段代码: 使用clang编译,但使用g会产生错误: 奇怪的是,如果我删除了对解调器的constexpr要求,那么这个例子编译和运行时就不会出错。 你知道这里发生了什么吗?

  • 请帮帮我 致命错误:在第104行的/home/u357965800/public_html/include/class.admin.php中对非对象调用成员函数prepare()

  • 我是C++的新手,我写了一个小程序来了解赋值如何处理对象。这个页面(http://www.cplusplus.com/doc/tutorial/classes2/)的cpp文档提示我这样做。在这一页上,它指出: 隐式版本[复制赋值操作符]执行浅层复制,这适用于许多类,但不适用于具有指向对象的指针的类,这些对象处理其存储。在这种情况下,不仅类会冒两次删除指向对象的风险,而且赋值会通过在赋值之前不删除

  • 这是我代码的一部分 我得到一个错误致命错误:对$stmt行上的非对象调用成员函数bind_param()-

  • 我得到一个错误与此文本:(对不起,我的英语不好,我来自德国!) 错误: