在线文档教程
C++
应用 | Utilities

std::apply

STD:申请

Defined in header
template <class F, class Tuple> constexpr decltype(auto) apply(F&& f, Tuple&& t(since C++17)

调用Callable对象f有很多争论。

参数

f-Callable object to be invoked
t-tuple whose elements to be used as arguments to f

返回值

归还的f...

注记

元组不需要std::tuple,相反,它可能是任何支持std::getstd::tuple_size特别是,std::arraystd::pair可能会被使用。

可能的实施

名称空间详细信息{Template<class F,class tuple,std::size[医]t...i>固定解密类型%28自动%29应用[医]IMPL%28F&f,Tuple&t,STD::index[医]序列<i...>%29{返回std::调用%28std::Forward<F>%28F%29,STD::GET<I>28%d::前进<Tuple>%28t%29%29...%29}//命名空间详细模板<class F,class tuple>conexpr解密类型%28 AUTO%29应用%28F&f,tuple&t%29{返回详细信息::Apply[医]推动%28 STD::前进<F>28F%29,STD::Forward<Tuple>%28t%29,STD::make[医]指数[医]序列<std::tuple[医]大小[医]V<STD::衰变[医]T型<Tuple>>>{}%29;}

*。

二次

#include <iostream> #include <tuple> int add(int first, int second) { return first + second; } template<typename T> T add_generic(T first, T second) { return first + second; } int main() { std::cout << std::apply(add, std::make_tuple(1,2)) << '\n'; // template argument deduction/substitution fails // std::cout << std::apply(add_generic, std::make_tuple(2.0f,3.0f)) << '\n'; }

二次

产出:

二次

3

二次

另见

make_tuplecreates a tuple object of the type defined by the argument types (function template)
forward_as_tuplecreates a tuple of rvalue references (function template)
make_from_tuple (C++17)Construct an object with a tuple of arguments (function template)
invoke (C++17)invokes any Callable object with given arguments (function template)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/实用程序/Apply