[c++] 함수 템플릿의 기본 템플릿 인수



Answers

C ++ 템플릿 인용하기 : 전체 가이드 (207 페이지) :

템플릿이 원래 C ++ 언어에 추가되었을 때 명시 적 함수 템플릿 인수는 유효한 구문이 아니 었습니다. 함수 템플릿 인수는 항상 호출 식에서 연역적이어야합니다. 결과적으로, 디폴트가 항상 추론 된 값에 의해 무시되기 때문에 기본 함수 템플리트 인수를 허용 할 강력한 이유가없는 것으로 보입니다.

Question

기본 템플릿 인수가 클래스 템플릿에만 허용되는 이유는 무엇입니까? 왜 우리는 멤버 함수 템플릿에 기본 타입을 정의 할 수 없습니까? 예 :

struct mycclass {
  template<class T=int>
  void mymember(T* vec) {
    // ...
  }
};

대신 C ++은 기본 템플릿 인수가 클래스 템플릿에서만 허용되도록합니다.




Windows에서는 모든 버전의 Visual Studio에서이 오류 ( C4519 )를 경고로 변환하거나 다음과 같이 비활성화 할 수 있습니다.

#ifdef  _MSC_VER
#pragma warning(1 : 4519) // convert error C4519 to warning
// #pragma warning(disable : 4519) // disable error C4519
#endif

자세한 내용은 C4519 참조 C4519 .




Related