我对constexpr功能有一些问题。
我想,用constexpr
修饰符声明的任何函数都必须返回编译时常量,但实际上它并不起作用。 (Eclipse + MinGW,gcc 4.8.1)
#include <ctime>
#include <iostream>
template<typename _Ty>
constexpr _Ty test_function(_Ty x) { return x; }
int main() {
auto x = time(0);
std::cout << test_function(x) << std::endl;
return 0;
}
显然,x
不是编译时常量,但是这段代码编译得很好,就好像test_function
没有constexpr
修饰符一样。有谁知道为什么?