0

Microsoft::WRL::Makeオブジェクトのコンストラクターに転送される最大 9 つの引数で定義されているようです。std::tupleは明らかな解決策ですが、理想からはほど遠いものです。この問題を解決するよりエレガントな方法はありますか?

WRL のメンテナーが潜んでいる場合は、可変個引数テンプレートのサポートを(およびなどMakeと同様に) に追加してください。RuntimeClass

4

1 に答える 1

0

FWIW、これが私の現在の作業ソリューションです:

template <typename... Types>
MyClass(std::tuple<Types...> args) :
    MyClass(args, std::make_integer_sequence<size_t, sizeof...(Types)>())
{
}

template <typename... Types, size_t... Indices>
MyClass(std::tuple<Types...>& args, std::integer_sequence<size_t, Indices...>) :
    MyClass(std::get<Indices>(std::move(args))...)
{
}

で構築

auto ptr = Make<MyClass>(std::forward_as_tuple(...));

理想とはほど遠いが、最悪のシナリオではうまくいくだろう...

于 2016-05-14T11:15:19.617 に答える