2017-12-01 4 views
4

내가 그것을 이런 식으로, 다른 클래스에 템플릿 인수의 전달 제네릭 클래스 템플릿을 구현하기 위해 노력하고있어 상수 심지어이 같은가변 인자 템플릿은

template <size_t N> 
class B 
{ 
    ... 

나 :이 같은

그래서
template <typename T, size_t N> 
class B 
{ 
    ... 

, 가변 typemames 및 스칼라 상수를 variadic 템플릿 매개 변수로 받아들이는 방법이 있습니까?

답변

2

값을 유형에 삽입 할 수 있습니다. 이것은 정확하게 리콜하면 부스트에서 오랫동안 사용되는 기술이며 C++ 11의 표준 라이브러리에 std::integral_constant (유용성을 나타냄)으로 추가되었습니다.

C++ 17에서는 작업이 훨씬 간단 해졌습니다. B의 별칭 B2과 함께

template<auto val> 
struct constant : std::integral_constant<decltype(val), val> {}; 

, 당신은 감사

template<typename T, typename N> 
struct B2 { using type = B<T, N::value>; }; 

template<typename... Args> 
struct A : public B2<Args...>::type {}; 

A<int, constant<42>> a; 
+0

현재의 standart위한 최적의 솔루션입니다 보인다로 사용합니다. –