2016-05-14 11 views
0

Microsoft::WRL::Make seems to be defined with a maximum of 9 arguments that will get forwarded to the object's constructorstd::tupleは明白な解決策ですが、理想からは遠いです。この問題を解決するよりエレガントな方法がありますか? WRLのいずれかのメンテナが周りに潜んでいる場合(あなたがそれをしている間など、RuntimeClassと同様)9個以上の引数を持つコンストラクタのMicrosoft :: WRL :: Makeの呼び出し

、ここに私の現在の作業ソリューションです、Make

答えて

0

FWIWを可変長引数テンプレートのサポートを追加してください。

理想からかけ離れ
auto ptr = Make<MyClass>(std::forward_as_tuple(...)); 

が、最悪の場合Sで構成

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))...) 
{ 
} 

cenarioそれは...

関連する問題