为什么numeric_limit <T> :: min/max不是常量?

Sod*_*der 2 c++ numeric-limits

可能重复:
为什么std :: numeric_limits <T> :: max()是一个函数?

我想知道是否有人可以解释为什么背后的原因std::numeric_limit<T>::min并且max是函数而不是常量?

此外,我想知道可以使用哪些技术将min/max值用作模板参数的一部分,例如:

template<unsigned long long max>
class foo
{
public:
   void boo() { std::cout << max << std::endl; }
};

.
.
.

foo<std::numeric_limits<int>::max()> f;
f.boo();
Run Code Online (Sandbox Code Playgroud)

Aar*_*aid 5

回到好老C!

foo< INT_MAX > f;
Run Code Online (Sandbox Code Playgroud)

甚至

const int my_int_max = INTMAX;
foo< my_int_max > f;
Run Code Online (Sandbox Code Playgroud)

适用于g ++(Debian 4.4.5-8)4.4.5