タプルからの可変個引数テンプレート関数の引数の展開
可変個引数テンプレート パラメーターを持つテンプレート関数を検討します。
template<typename Tret, typename... T> Tret func(const T&... t);
方法値のタプルを使用して func() を呼び出すことはできますか? argument?
最新の C ソリューション (C 17 以降)
C 17 では、std::apply() 関数が洗練されたソリューションを提供します。
std::apply(the_function, the_tuple);
クラング 3.9回避策
Clang 3.9 を使用している場合は、代わりに std::experimental::apply 関数を使用できます。
テンプレート関数の処理
the_function がテンプレート化されている場合、次を使用できます回避策:
#include <tuple> template <typename T, typename U> void my_func(T &&t, U &&u) {} int main() { std::tuple<int, float&> my_tuple; std::apply([](auto &&... args) { my_func(args...); }, my_tuple); return 0; }
一般化されたオーバーロード セットの呼び出し
オーバーロード セットと関数テンプレートを処理できるより汎用性の高いソリューションについては、https:/ で包括的な説明を参照してください。 /blog.tartanllama.xyz/passing-overload-sets/.
以上がC の可変引数テンプレート関数に値のタプルを引数として渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。