2011-05-16 62 views
2

可能重复:
Why is std::numeric_limits<T>::max() a function?为什么numeric_limit <T> :: min/max不是常量?

我想知道,如果有人可以解释为什么落后和std::numeric_limit<T>::minmax功能,而不是常量的理由?

此外,我想知道是什么技术可以用来利用最小/最大值作为模板参数部分,例如:

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

. 
. 
. 

foo<std::numeric_limits<int>::max()> f; 
f.boo(); 
+0

......以及关于你问题的第二部分,关于模板实例,看到这个答案:http://stackoverflow.com/questions/2738435/using-numeric-limitsmax-in-constant-expressions/2738576#2738576 – 2011-05-16 00:36:01

+0

@约翰:感谢这些答案,但我希望一个解决方案不基于在Boost上,因为我目前正在进行的项目中无法访问它。 – 2011-05-16 00:46:28

+0

那么你可能想在下面使用Aaron的解决方案。 – 2011-05-16 01:21:34

回答

5

依傍好旧的C!

foo<INT_MAX> f; 

甚至

const int my_int_max = INTMAX; 
foo<my_int_max> f; 

对我的作品在G ++(Debian的4.4.5-8)4.4.5

相关问题