C++1z タプルを展開して関数呼び出しするapply関数

C++1zから、タプルを引数列に変換して関数適用するapply()関数が入ります。これは、C++14で追加されたコンパイル時整数シーケンスを使用した最初の標準ライブラリ実装になります。

#include <iostream>
#include <tuple>
#include <string>

void f(int a, double b, std::string c)
{
    std::cout << a << std::endl;
    std::cout << b << std::endl;
    std::cout << c << std::endl;
}

int main()
{
    std::tuple<int, double, std::string> args(1, 3.14, "hello");
    std::apply(f, args);
}

出力:

1
3.14
hello

宣言

// <tuple>
namespace std {
  template <class F, class Tuple>
  constexpr decltype(auto) apply(F&& f, Tuple&& t);
}

参照

お断り

この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。