C++ 템플릿을 사용하여 간단한 정수 범위 검사기 및 변환기를 만들고 싶습니다.
코드는 다음과 같습니다C++에서 안전한 정수 변환
// D is the "destination" type and S the "source" type
template <class D, class S>
inline D SafeConvert(S value);
template <class S>
inline int SafeConvert<int>(S value) {
ASSERT(value >= S(INT_MIN) && value <= S(INT_MAX));
return int(value);
} /// error C2768: 'SafeConvert' : illegal use of explicit template arguments
template <class S>
inline size_t SafeConvert<size_t>(S value) {
ASSERT(value >= S(0) && value <= S(size_t(-1)));
return size_t(value);
} /// error C2768: 'SafeConvert' : illegal use of explicit template arguments
// ...
void test() {
size_t v = INT_MAX+1;
int iv = SafeConvert<int>(v);
}
그러나 나는이 다음과 같은 와서 컴파일 오류 :
error C2768: 'SafeConvert' : illegal use of explicit template arguments
내 질문은 어떻게에만 D 클래스를 전문으로하고자하는 컴파일러에게하는 것입니다?
감사합니다.
시도해 볼 수 있습니다. http://stackoverflow.com/questions/998571/c-template-for-safe-integer-casts/998982#998982 –