5

부분 전문은 허용되지 않습니다 : 부분 특수화는 별칭 템플릿

template <typename T> 
using unwrapped_future_t = T; 

template <typename T> 
using unwrapped_future_t<future<T>> = typename future<T>::value_type; 
         ^~~~~~~~~~~ 
> error: partial specialization of alias templates is not permitted 

왜이 허용되지 않습니다 : 예를 들어

은, 창조적 인 노력, 그 소리에서이 오류를 얻을?

답변

9

별칭 템플릿의 original proposal에 답 찾을 수 있습니다

2.2 메인 선택 : 반사경에와 진화 WG에서 논의 후

그밖에 모두 대 전문화, 그것은 두 개의 상호 배타적 인 모델 중에서 선택해야한다는 것을 알게되었습니다 :

  1. typedef 템플릿 자체가 별칭이 아닙니다. ; typedef 템플릿의 (아마도 특수화 된) 인스턴스화 만이 별칭입니다. 이 선택을 통해 typedef 템플릿을 전문화 할 수 있습니다.

  2. typedef 템플릿 자체가 별칭입니다. 그것은 전문화 될 수 없다. 이 선택은 허용 것이다 : 타입 정의 템플릿 함수 파라미터에

    • 공제
    • 선언이 타입 정의 템플릿 (2.5 참조)
    • 타입 정의 템플리트없이 선언과 동일 할 템플릿 타입 정의하여 표현 (2.4 참조) 경기 템플릿 템플릿 매개 변수 (2.6 참조)
바로 그 다음 문장은
+1

는 "이 논문은 옵션을 제안한다 1, 따라서 전문성을 선호 ... "그 옵션이 선택되지 않은 이유에 대한 답은 어디에 있습니까? – Lack

+0

@Lack 나는 그다지 모른다. 그러나 나는 추측 할 수있다 :위원회 투표, 옵션 2의 다수. – Morwenn