相关疑难解决方法(0)

有可能知道constexpr什么时候真的是constexpr?

由于constexpr的扩展版本(我想从C++ 14开始),你可以声明constexpr函数,它们可以用作"真正的"constexpr,即代码在编译时执行或者可以表现为内联函数.那么什么时候可以有这个程序:

#include <iostream>

constexpr int foo(const int s) {
  return s + 4;
}

int main()
{
    std::cout << foo(3) << std::endl;
    const int bar = 3;
    std::cout << foo(bar) << std::endl;
    constexpr int a = 3;
    std::cout << foo(a) << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当然,结果是:

7
7
7
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.所以我的问题是:如果函数在编译时或运行时执行,有没有办法(可能是标准的)知道foo(const int s)?

编辑:也可以在运行时知道在编译时是否评估了函数?

c++ constexpr c++14 c++17

21
推荐指数
5
解决办法
2800
查看次数

标签 统计

c++ ×1

c++14 ×1

c++17 ×1

constexpr ×1