ホームページ >バックエンド開発 >C++ >C の可変引数テンプレート関数に値のタプルを引数として渡すにはどうすればよいですか?

C の可変引数テンプレート関数に値のタプルを引数として渡すにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-02 22:07:40557ブラウズ

How Can I Pass a Tuple of Values as Arguments to a Variadic Template Function in C  ?

タプルからの可変個引数テンプレート関数の引数の展開

可変個引数テンプレート パラメーターを持つテンプレート関数を検討します。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。