2011-05-16 2 views
2

가능한 중복 : 누군가가 std::numeric_limit<T>::minmax 함수가 아닌 상수 왜 뒤에 이유를 설명 할 수있는 경우
Why is std::numeric_limits<T>::max() a function?왜 numeric_limit입니까 <T> :: 최소/최대가 상수가 아닙니까?

이 궁금 해서요?

또한, 나는 예를 들면, 기술은 템플릿 매개 변수의 일환으로 최소/최대 값을 활용하는 데 사용할 수 있습니다 무엇인지 알고 싶습니다

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 –

+0

@ 존 : 그 해답을 주셔서 감사합니다. 그러나 나는 기반이 아닌 해결책을 기대하고있었습니다. Boost에서는 현재 작업중인 프로젝트에서 액세스 할 수 없기 때문에 –

+0

그러면 아론의 솔루션을 아래에서 사용하고 싶을 것입니다. –

답변

5

가을 다시 좋은 오래된 C에!

foo<INT_MAX> f; 

또는 g에 나를 위해 심지어

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

작품 ++ (4.4.5-8 데비안) 4.4.5