C ++ 11 constexpr + noexcept不会告诉函数是否是编译时常量函数

时间:2017-02-20 11:32:34

标签: c++11 expression constants constexpr noexcept

我在cppreference网站上看到了这个例子,但是运行结果不是预期的。(http://en.cppreference.com/w/cpp/language/constexpr

页面上写着:“

因为noexcept运算符总是为常量表达式返回true,所以它可用于检查constexpr函数的特定调用是否采用常量表达式分支:“

但我试验了这个:

$cat testNoexcept.cpp
#include<stdio.h>
constexpr int f1();
constexpr int f2(){return 1;}
int main(){
    constexpr bool b1=noexcept(f1());//false
    constexpr bool b2=noexcept(f2());//true
    printf("%d,%d\n",b1,b2);
    return 0;
}

$g++ testNoexcept.cpp -std=c++14&&./a.out
0,0

两者都是假的。为什么?网站是错误的,还是我的理解错了?

0 个答案:

没有答案