답변:
너가해야되는:
Foo<> me;
템플릿 인수가 있어야하지만 비워 둘 수 있습니다.
foo하나의 기본 인수가 있는 함수처럼 생각하십시오 . 표현 foo은 그것을 부르지 않을 것이지만 foo()의지 할 것입니다. 인수 구문은 여전히 존재해야합니다. 이것은 그것과 일치합니다.
foo. Foo그러나 인수없이 클래스 이름을 지정할 수 있습니다 .
<>이 경우 더 이상 필요하지 않습니다. 자세한 내용은 답변을 확인하십시오.
C ++ 17을 사용하면 실제로 할 수 있습니다.
이 기능을 클래스 템플릿 인수 공제 라고 하며 템플릿 형식의 변수를 선언 할 수있는 방법에 유연성을 추가 합니다 .
그래서,
template <typename T = int>
class Foo{};
int main() {
Foo f;
}
이제 합법적 인 C ++ 코드 입니다.
다음을 사용할 수 있습니다.
Foo<> me;
그리고 int템플릿 논쟁이 되십시오. 각도 괄호는 필요하며 생략 할 수 없습니다.
Foo수있는 템플릿 식별자 또는 수있는 기본 인수가 있는지 여부에 따라 명시 적 인스턴스화합니다. 명시 적 인스턴스화 구문을 유지하는 것이 좋습니다.foo기본 매개 변수가 하나 인 함수처럼 생각하십시오 . 당신은 그것을 좋아 호출 할 수 없습니다foo당신이 그것을 호출합니다foo(). 이것을 일관성있게 유지하는 것이 합리적입니다.