s1
아래 클래스 템플릿 전문화에서는 정수 템플릿 매개 변수를 사용할 때 s1
의 인스턴스화 만 허용합니다.클래스 템플릿 SFINAE를 통해 상속
template <typename, typename = void>
struct s1;
template <typename T>
struct s1<T, std::enable_if_t<std::is_integral<T>::value>> { };
다음 클래스 템플릿 s2
은 비슷합니다. 조건부로 사소한 기본 클래스에서 개인적으로 상속 받지만. s1
과 s2
사이의 기능상의 차이점은 무엇입니까? s1
와
struct Base { };
template <typename T>
struct s2 : private std::enable_if_t<std::is_integral<T>::value,Base> { };
'T'가 정수가 아니라면's2'는 무엇으로부터 유래한다고 생각합니까? – AndyG
s2를 Base에서 개인적으로 파생 시키면 모든 의도와 목적이 같다고 생각합니다. –
@RichardHodges가 제안한대로 개인적으로 상속받을 s2를 업데이트했습니다. – user2023370