Program Tip

"템플릿 <>"대 괄호없는 "템플릿"-차이점은 무엇입니까?

programtip 2020. 10. 27. 23:10
반응형

"템플릿 <>"대 괄호없는 "템플릿"-차이점은 무엇입니까?


내가 선언했다고 가정하자.

template <typename T> void foo(T& t);

자, 차이점은 무엇입니까

template <> void foo<int>(int& t);

template void foo<int>(int& t);

의미 상? 그리고 대괄호가없는 템플릿과 빈 대괄호가있는 템플릿은 다른 컨텍스트에서 다른 의미를 가지고 있습니까?


관련 항목 : C ++ 템플릿의 특정 인스턴스를 강제로 인스턴스화하려면 어떻게합니까?


template <> void foo<int>(int& t);잠재적으로 다른 본문을 사용하여 템플릿 전문화선언합니다 .

template void foo<int>(int& t);원인이 명시 적 인스턴스화 템플릿을하지만, 전문화를 도입하지 않습니다. 특정 유형에 대한 템플릿의 인스턴스화를 강제합니다.


클래스 / 구조체를 사용하면

template <typename T> struct foo {};

다음은 전문화입니다.

template <> struct foo<int>{};

다음은 명시 적 인스턴스화입니다.

template struct foo<int>;

참고 URL : https://stackoverflow.com/questions/28354752/template-vs-template-without-brackets-whats-the-difference

반응형