C++17 で追加される std::apply 関数

C++17 で std::apply という関数が新しく追加されます。
これは『タプル型を展開して関数の引数として渡す』という関数になります。

#include <tuple>
#include <iostream>

int
main(){
    auto print = [](auto id, auto name, auto age){
        std::cout
            <<  "id:"   << id
            << " name:" << name
            << " age:"  << age
            << std::endl;
    };
    auto args  = std::make_tuple(42, "homu", 14);

    // print(42, "homu", 14)
    // みたいに渡される
    std::apply(print, args);

    // print(54, "mami", 15)
    std::apply(print, std::make_tuple(54, "mami", 15));
    
    return 0;
}
// output:
// id:42 name:homu age:14
// id:54 name:mami age:15

引数をタプル型で保持しておいて関数の引数として渡したいことは稀によくあるのでこういうヘルパ関数があると捗るる。

参照