나는이 코드를 가지고 : 나는 같은 템플릿 '서명'와 템플릿 기능으로 foo()
을하면기본 템플릿 매개 변수 : 컴파일러가 템플릿 인수를 지정하지 않는 것에 대해 불평하는 이유는 무엇입니까?
struct A{};
template<class T = A>
struct B {
void foo() {}
};
B b; //Error: missing template arguments before 'b'
//Error: expected ';' before 'b'
//More errors
b.foo()
를, 컴파일러는 템플릿 인수를 지정하지 않는 불평하지 않습니다
struct A {};
struct B {
template<class T = A>
void foo() {}
};
B b; //OK
b.foo()
그렇다면 왜 기본 매개 변수를 사용하여 템플릿 클래스에 대한 인수를 지정해야하지만 템플릿 함수에는 지정하지 않아야합니까? 내가 누락 된 미묘한 점이 있습니까?
이유는 템플릿 인수 공제 실패 때문입니다. 하지만 그 이유를 알고 싶습니다.
이 제목의 제목에서 누락 된 단어가 있습니까? – Pointy
예. 단어를 놓친 - 불평. 그것을 추가했습니다. – badmaash
* [함수 템플릿의 기본 템플릿 인수] (http://stackoverflow.com/questions/2447458/default-template-arguments-for-function-templates) *. –