首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::apply

Defined in header <tuple>

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;}

*。

二次

代码语言:javascript
复制
#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'; 
}

二次

产出:

二次

代码语言:javascript
复制
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)

代码语言:txt
复制
 © cppreference.com

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

扫码关注腾讯云开发者

领取腾讯云代金券