튜플 유형이 있고 다른 템플릿을 인스턴스화하기 위해 템플릿 매개 변수 팩을 추출한다고 가정 해보십시오. 그것이 유형 템플릿이라면 다음과 같은 유틸리티를 사용할 수 있습니다 :가변 템플릿 템플릿?
template < typename Tuple, template <typename...> typename What >
struct PutTupleInT;
template < typename... Types, template <typename...> typename What >
struct PutTupleInT<std::tuple<Types...>, What>
{
using Result = What<Types...>;
};
그러나 원하는 템플릿이 가변적 인 템플릿 일 경우 어떻게해야합니까? template <typename...> typename What
은 형식 템플릿의 "자리 표시 자"이지만 변수 템플릿의 "자리 표시 자"는 무엇입니까?
나는 clang-4.0.0 (자동 형식의 비 유형 템플릿 매개 변수를 지원하는 유일한 컴파일러)에서 다음을 시도했지만 실패했습니다. 사실 이것은 C++ 17에 대한 올바른 구문인지 확실하지 않습니다.
template < typename Tuple, template <typename...> auto What >
struct PutTupleInV;
template < typename... Types, template <typename...> auto What >
struct PutTupleInV<std::tuple<Types...>, What>
{
static constexpr auto value = What<Types...>;
};
'decltype (vartempl)'을 사용하여 실제로 변수 템플릿의 유형을 추출 할 수 없습니까? – skypjack
@skypjack 죄송합니다, 무슨 뜻인지 정말로 모르겠습니다. – Vahagn