0
다음 코드를 사용하면 두 번째 foo
이 부분 전문화로 간주되는 이유는 다소 혼란 스럽지만 (IMO는 모두 부분이이 아니어야 함). 두 번째 foo
GCC에왜 부분적으로 전문화 된 것으로 간주 되는가
template <bool IS_TRUE>
int foo();
// Doesn't work!?
template <bool IS_TRUE>
int foo<IS_TRUE>() {
return 0;
}
template <>
int foo<true>() {
return 0;
}
int main() {
return foo<true>();
}
불평 :
error: function template partial specialization ‘foo’ is not allowed
누군가가 설명해 주시겠습니까, 내가 놓친 거지 자세한 것을.
'부분적으로) 부분적으로 전문화 된 것처럼 보이기 때문에 (클래스는 그것을 가질 수 있음을 기억하라.) 그리고 함수 템플릿은 부분적인 전문화를 가질 수 없기 때문에 ... – Xeo
정말요? 이 2 개의 정의는 나에게 꽤 다른 것처럼 보입니다. 사양에 대한 링크가 있습니까? – abergmeier
'§14.5/1' : "* template-id *, 즉 * template-name * 다음에 * template-argument-list *가 기본 템플릿 선언의 선언에 지정되어서는 안됩니다." – Xeo