을 수행하여을 전문화 템플릿
template <int n>
void f(){...};
은 내가 n
의 특정 값을 전문으로 할 수 있습니다 알고있는 템플릿을 감안할 때 :
template <>
void f<2>(){...};
을하지만, 나를 수있는 방법이있다 모든 긍정적 인 내용으로 전문화하기 위해 n
?
template <int n>
void f<n>(){
int dummy[n]; //invalid for n < 0
...
};
을하고 생각 그래서 n<0
이 코드가 잘못 컴파일러는 이전 정의에 의존한다. 불행히도 내가 얻는 것은 redefinition of 'void f<n>()'
오류입니다.
참고 : 표준에서 지원되지 않는 것 같습니다. 나는이 효과를 얻기 위해 어떤 방법 (어쩌면 어떤 템플릿 메타 프로그래밍)이 없는지 묻고있다.
Matter of style,하지만 나는 반환 타입에'enable_if'를 두는 것을 선호합니다. 그래서 혼란스러운 것들 (사용자와 함수의 타입)에 매달린 매개 변수가 없습니다. – GManNickG