C++ 템플릿 함수를 작성하는 동안이 함수가 사용하는 변수 유형이 필수인지 확인해야합니다. 이 경우 컴파일 오류가 발생합니다.반복자 값에 정수 유형이 있는지 테스트하려면 어떻게해야합니까?
template <class IT> void foo(IT first, IT last) {
// check here that *first has integral type.
}
내가 가진 문제는이 함수 템플릿 매개 변수가 사용 된 유형이 아니라 반복자 유형이라는 것입니다.
불행히도 저는 현재 C++ 11이나 부스트를 사용할 수없는 환경에 있기 때문에이 휠을 직접 재발견해야 할 것입니다.
매개 변수 배열 크기를 사용하여 배열에 대한 포인터를 정의하여 형식이 필수적이라는 테스트가 끝났습니다. 매개 변수 유형이 정수가 아니면 컴파일 오류가 발생합니다.
template <class IT> void foo(IT first, IT last) {
int (* fake_array_ptr)[*first]; // Error: size of array has non-integral type
}
내 질문은 : 유형이 통합 여부를 테스트하기 위해 다른 더 명시 적 방법이 있습니까?
"참고 : C++ 11 또는 부스트를 사용할 수 없습니다." 왜? 부스트를 사용할 수없는 좋은 이유를 말해줘. – Xeo
* 좋은 이유 *를 갖고 싶지만 현재 프로젝트에서 사용할 수 없다는 점을 제외하고는 아무 것도 없습니다. –
@DidierTrosset 자신의'is_integral' 템플릿을 구현해야하는 것처럼 보입니다. – juanchopanza