指定符 与  constexpr

constexpr是指编译时可以求得函数和变量的值。

但这里有一个例子

1
2
3
constexpr int factorial(int n){
return n<1:1,n*(factorial(n-1));
}

这个函数在编译期间应该是无法求得值的吧,为什么可以这么用呢?