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); }
参照
- N3802
apply()
call a function with arguments from a tuple - N3829
apply()
call a function with arguments from a tuple (V2) - N3915
apply()
call a function with arguments from a tuple (V3) - P0220R0 Adopt Library Fundamentals TS for C++17
- P0220R1 Adopt Library Fundamentals V1 TS Components for C++17 (R1)
apply()
を標準アルゴリズムと組み合わせられるように改善する- N4307 National Body Comment -- ISO/IEC PDTS 19568 -- Technical Specification: C++ Extensions for Library Fundamentals
お断り
この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。