std::numeric_limits의 min(), max()는 함수로 만들어져있습니다.
namespace std
{
inline int numeric_limits<int>::min() throw()
{
return INT_MIN;
}
}
그 이유는 여러가지가 있겠지만 어쨌든!! 함수로 만들어져있기에!!
클래스 내부 초기화에서 사용할 수 없습니다!!
그러니까 다시 말해서 다음과 같은 코드를 허용하지 않는다는 것입니다.
class AAA
{
static const int xxx = std::numeric_limits<int>::max();
};
가끔 이런 코드가 필요한데 이렇게 코드를 만들고 컴파일을 해보면
error C2057: 상수 식이 필요합니다.
를 만나게 되지요..
그래서 저는 이런걸 만들어서 사용하고 있습니다.
namespace type_traits
{
template<typename T>
struct number_limits
{
};
template<>
struct number_limits<char>
{
static const char min = CHAR_MIN;
static const char max = CHAR_MAX;
};
template<>
struct number_limits<unsigned char>
{
static const unsigned char min = 0;
static const unsigned char max = UCHAR_MAX;
};
template<>
struct number_limits<short>
{
static const short min = SHRT_MIN;
static const short max = SHRT_MAX;
};
... 생략
}
'프로그래밍' 카테고리의 다른 글
비쥬얼 스튜디오 디버깅 팁 ( Visual Studio Debugging Tips ) (31) | 2013.04.10 |
---|---|
미니덤프 파일이 안남는다고 디버깅을 포기할텐가?!?!!?!! (0) | 2013.04.06 |
C++에서 ID Type이 필요할때 어떻게 쓰시나요?? (0) | 2013.04.05 |
cocos2d-x 프로파일링 기능에 관한 짧은 팁 (0) | 2013.04.05 |
모바일 게임 만들기 체험을 해봐요. 프로그래밍을 몰라도 좋아요. (17) | 2013.01.18 |