가변적 인 수의 템플릿 화 된 인수가있는 템플릿 화 된 클래스가 있습니다. 이 경우 (나는 C++ 11을 가질 여유가 없다), 좋은 연습은 none
이라고 부르는 기본 클래스를 생성하고 아래와 같이 기본값으로 두는 것이다.가변 수의 템플릿 화 된 인수로 템플릿 화 된 클래스의 멤버에 액세스
struct none {};
template<class T1=none, T2=none, T3=none>
class A{
template<class T>
double extract() { return none();}
template<>
double extract<T1>() { return m1_();}
template<>
double extract<T2>() { return m2_();}
template<>
double extract<T3>() { return m3_();}
T1 m1_;
T2 m2_;
T3 m3_;
};
이 단계에서는 템플릿 된 인수 각각에 액세스 할 수있는 일반/템플릿 액세스 함수를 구현하는 방법을 알지 못합니다.
템플릿 기반 인수가 모두 다르기 때문에 템플릿 기반 인수 각각에 대해 A :: extract()를 특수화했습니다.
더 좋은 방법이 있습니까? 어떤 종류의 태깅이라도 볼 수 있나요?
'T1'과 'T2'가 같은 유형 인 경우이 액세스 방법은 모호 해집니다. –
이것은 [is_same] (http://en.cppreference.com/w/cpp/types/is_same)의 이점이 될 것입니다. –
boost :: tuples 사용 http://www.boost.org/doc/libs /1_55_0/libs/tuple/doc/tuple_users_guide.html –