を私が正しくあなたの質問を理解していれば、あなたが実際に探していることは
template <typename ...Ts>
struct Final { ... };
constexpr auto foo = hana::make_tuple(hana::type_c<Foo1>,hana::type_c<Foo2>);
auto final_type = hana::unpack(foo, [](auto ...args) {
return Final<typename decltype(args)::type...>;
});
// now, final_type is a hana::type<Final<Foo1, Foo2>>
あなたはまたhana::template_
を使用して同じことを達成することができます:
constexpr auto foo = hana::make_tuple(hana::type_c<Foo1>,hana::type_c<Foo2>);
auto final_type = hana::unpack(foo, hana::template_<Final>);
私がバリーの答えを見ると、Final<decltype(hana::type_c<Foo1>), decltype(hana::type_c<Foo2>)>
を作成することになります。これはおそらくあなたが望むものではありません。
そのコードは無効です。C++ 14またはC++ 17。あなたはコンセプトを使っていますか? –
@KerrekSB私はここにコンセプトは必要ありません、あなたはなぜそれが無効であるのか教えてくれますか? –
'auto'はC++の有効な関数型ではありません。これはラムダ式でのみ許可されています。 –