タプルタイプがあり、別のテンプレートをインスタンス化するためにそのテンプレートパラメータパックを抽出するとします。それがタイプテンプレートの場合、私はこのようなユーティリティを持つことができます:可変テンプレートテンプレート?
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++の正しい構文であるかどうかはわかりません。
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