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::get
和std::tuple_size
特别是,std::array
和std::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_tuple | creates a tuple object of the type defined by the argument types (function template) |
---|---|
forward_as_tuple | creates 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。