잠재적으로 다른 유형의 비 유형 매개 변수 목록을 사용하는 클래스를 정의하고자합니다. 예를 들어, 다음은 유효해야합니다 :다른 유형의 비 유형 매개 변수가있는 C++ 가변 템플릿
template<int... args>
class Test {
// ...
};
내 특정 사용,보다 구체적으로 :
Test<3, 4.5, 6> t;
모든 매개 변수가 같은 유형이 있다면, 나는 다음과 같은 정의를 사용할 수, int
말 두 번째 클래스에 많은 멤버가있는 Base
이 있는데, 나는 Base
멤버 포인터를 전달하고 싶습니다. Base::a
및 Base::b
는 일반적인 유형 T
이있는 경우 다음과 같이
Test<&Base::a, &Base::b>
, 그때 Test
을 정의 할 수 있습니다.
template<int Base::* ...args>
class Test {
//
};
어떻게 이러한 클래스를 정의 할 수 있습니까? Test
?
그래서 정확히 무엇이 문제입니까? – iavr
필자가 얻을 수있는 최선의 방법은'std :: integral_constant' 또는 유사한 것을 사용하고 템플릿 매개 변수 유형의 팩을 사용하는 것입니다. 그런 다음 보일러 장소를 줄이기 위해 매크로를 사용할 수 있습니다 :'#define C_MEM_FUN (X) std :: integral_constant'그리고'Test ' –
dyp
'template '는'template '이어야한다고 생각합니다. –
Constructor