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

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

Patricia Arquette
リリース: 2025-01-02 22:07:40
オリジナル
542 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート