템플릿 클래스-멤버 함수 전문화

Irbis

다음은 예제 코드입니다.

template<class T>
class A
{
public:
   A(T t): x(t){}
   T getX();
private:
   T x;
};

template<class T>
T A<T>::getX()
{
   return x;
}

// member function specialization
template<> // works with and without template<> 
long A<long>::getX()
{
   return 1000L;
}

위의 코드 는 멤버 함수 전문화 이전에 template <>의 유무에 관계없이 작동합니다 . 왜 ? 그런 경우 어떤 차이가 있습니까?

Edit1 : 이 템플릿을 사용합니다 (VS 2012 컴파일러).

A<int> a1(1);
cout<<a1.getX()<<endl;
A<long> a2(1);
cout<<a2.getX()<<endl;
궤도의 가벼움 레이스

규정을 준수하지 않습니다.

FWIW, GCC 4.8은 template <>.

컴파일러가 버그가 있거나이를 지원하는 확장 기능이 있습니다. MSVS 2012에서 코드를 수락 함을 확인할 수 있습니다. 나는 MSVS 2013 November CTP도 불만없이 그것을 먹어 치운다 고 들었습니다. 공정하게 말하면 Visual Studio는 항상 템플릿 사양에 대해 상당히 관대했습니다.

[C++11: 14.7/3]: 함수 템플릿, 클래스 템플릿, 클래스 템플릿 의 멤버 또는 멤버 템플릿에 대해 명시 적 전문화를 선언 할 수 있습니다 . 에 의해 명시적인 전문화 선언이 도입되었습니다 template<>. [..]

이 규칙의 유일한 예외는 다음과 같습니다.

[C++11: 14.7.3/5]: [..] 명시 적으로 특수화 된 클래스 템플릿의 멤버는 template<>구문을 사용하지 않고 일반 클래스의 멤버와 동일한 방식으로 정의됩니다 . [..]

… 그러나 여기에는 적용되지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

템플릿 클래스의 멤버 함수 전문화

분류에서Dev

템플릿 클래스에서 템플릿 멤버 함수를 전문화하는 방법 (이미 지정됨)?

분류에서Dev

템플릿 전문화-멤버 함수

분류에서Dev

템플릿 전문화-멤버 함수

분류에서Dev

템플릿 클래스의 클래스 멤버 전문화

분류에서Dev

모든 템플릿 클래스 멤버 함수의 인스턴스화 강제

분류에서Dev

인스턴스화 오류 후 멤버 함수 템플릿의 전문화 및 멤버 함수 순서

분류에서Dev

하나의 멤버 함수 만 변경하는 클래스 템플릿 전문화

분류에서Dev

템플릿 함수의 C ++ 템플릿 클래스 멤버

분류에서Dev

클래스 템플릿 멤버 전문화

분류에서Dev

템플릿 구조의 객체를 다른 템플릿 클래스의 멤버 함수로 전달

분류에서Dev

템플릿 클래스에서 템플릿 멤버 함수를 전문화하는 방법은 무엇입니까?

분류에서Dev

전문화 된 템플릿 클래스의 정의 외부에서 템플릿 멤버 함수를 어떻게 정의합니까?

분류에서Dev

클래스에서 멤버 클래스 템플릿 전문화 사용

분류에서Dev

템플릿 클래스 / 구조체의 멤버 함수 주소를 함수 매개 변수로 전달

분류에서Dev

클래스 멤버로서의 템플릿 인수 함수

분류에서Dev

멤버 변수로 멤버 클래스 템플릿을 인스턴스화 할 수 있습니까?

분류에서Dev

템플릿 전문화 정의에서 한 클래스의 멤버 typedef를 템플릿 매개 변수로 사용할 수 없습니다.

분류에서Dev

가변 템플릿 멤버 함수 전문화

분류에서Dev

클래스 멤버 템플릿 전문화 (및 클래스 템플릿 멤버 전문화)에 대해 다른 액세스 수정자를 설정할 수 있습니까?

분류에서Dev

PARENT 클래스의 멤버 이름을 템플릿 인수로 전달

분류에서Dev

클래스에 여러 템플릿 매개 변수가있을 때 멤버 템플릿을 전문화합니까?

분류에서Dev

멤버 함수에서 템플릿 클래스 반환

분류에서Dev

템플릿 클래스의 멤버 함수

분류에서Dev

Variadic 템플릿 클래스-Variadic 멤버 함수

분류에서Dev

템플릿 전문화 기본 클래스 함수 템플릿 누락

분류에서Dev

템플릿 함수가있는 전문화 템플릿 클래스

분류에서Dev

`enable_if ()`는 템플릿 클래스의 정적 멤버 함수 선언을 비활성화합니다.

분류에서Dev

가변 클래스 템플릿 유형의 멤버 함수 결과로 배열 초기화?

Related 관련 기사

  1. 1

    템플릿 클래스의 멤버 함수 전문화

  2. 2

    템플릿 클래스에서 템플릿 멤버 함수를 전문화하는 방법 (이미 지정됨)?

  3. 3

    템플릿 전문화-멤버 함수

  4. 4

    템플릿 전문화-멤버 함수

  5. 5

    템플릿 클래스의 클래스 멤버 전문화

  6. 6

    모든 템플릿 클래스 멤버 함수의 인스턴스화 강제

  7. 7

    인스턴스화 오류 후 멤버 함수 템플릿의 전문화 및 멤버 함수 순서

  8. 8

    하나의 멤버 함수 만 변경하는 클래스 템플릿 전문화

  9. 9

    템플릿 함수의 C ++ 템플릿 클래스 멤버

  10. 10

    클래스 템플릿 멤버 전문화

  11. 11

    템플릿 구조의 객체를 다른 템플릿 클래스의 멤버 함수로 전달

  12. 12

    템플릿 클래스에서 템플릿 멤버 함수를 전문화하는 방법은 무엇입니까?

  13. 13

    전문화 된 템플릿 클래스의 정의 외부에서 템플릿 멤버 함수를 어떻게 정의합니까?

  14. 14

    클래스에서 멤버 클래스 템플릿 전문화 사용

  15. 15

    템플릿 클래스 / 구조체의 멤버 함수 주소를 함수 매개 변수로 전달

  16. 16

    클래스 멤버로서의 템플릿 인수 함수

  17. 17

    멤버 변수로 멤버 클래스 템플릿을 인스턴스화 할 수 있습니까?

  18. 18

    템플릿 전문화 정의에서 한 클래스의 멤버 typedef를 템플릿 매개 변수로 사용할 수 없습니다.

  19. 19

    가변 템플릿 멤버 함수 전문화

  20. 20

    클래스 멤버 템플릿 전문화 (및 클래스 템플릿 멤버 전문화)에 대해 다른 액세스 수정자를 설정할 수 있습니까?

  21. 21

    PARENT 클래스의 멤버 이름을 템플릿 인수로 전달

  22. 22

    클래스에 여러 템플릿 매개 변수가있을 때 멤버 템플릿을 전문화합니까?

  23. 23

    멤버 함수에서 템플릿 클래스 반환

  24. 24

    템플릿 클래스의 멤버 함수

  25. 25

    Variadic 템플릿 클래스-Variadic 멤버 함수

  26. 26

    템플릿 전문화 기본 클래스 함수 템플릿 누락

  27. 27

    템플릿 함수가있는 전문화 템플릿 클래스

  28. 28

    `enable_if ()`는 템플릿 클래스의 정적 멤버 함수 선언을 비활성화합니다.

  29. 29

    가변 클래스 템플릿 유형의 멤버 함수 결과로 배열 초기화?

뜨겁다태그

보관