std::tuple<VTypes...> make_tuple( Types&&... args ); (C++11 起) (C++14 起为 constexpr) 创建元组对象,从实参类型推导目标类型。 对于Types... 中的每个 Ti,Vtypes... 中的对应类型 Vi 为std::decay<Ti>::type,除非应用 std::decay 对某些类型 X 导致std::reference_wrapper<X>,该情况下推...
std::tuple<int, int> f() // this function returns multiple values { int x = 5; return std::make_tuple(x, 7); // return {x,7}; in C++17 } int main() { // heterogeneous tuple construction int n = 1; auto t = std::make_tuple(10, "Test", 3.14, std::ref(n), n); n...
constexprtuple<VTypes...>make_tuple(Types&&...args); (C++14 起) 创建tuple 对象,从参数类型推导目标类型。 对于每个Types...中的Ti,Vtypes...中的对应类型Vi为std::decay<Ti>::type,除非应用std::decay对某些类型X导致std::reference_wrapper<X>,该情况下推导的类型为X&。
在编译时使用std::make_tuple是通过C++标准库中的std::make_tuple函数来实现的。该函数可以用于创建一个std::tuple对象,它是一个固定大小的、异构的、不可变的序列。 ...
std::tuple<VTypes...> make_tuple( Types&&... args ); (C++11 起)(C++14 起为 constexpr) 创建tuple 对象,从参数类型推导目标类型。 对于每个 Types... 中的Ti, Vtypes... 中的对应类型 Vi 为std::decay<Ti>::type ,除非应用 std::decay 对某些类型 X 导致std::reference_wrapper<X> ,该情况...
constexprtuple<VTypes...>make_tuple(Types&&...args); (C++14 起) 创建tuple 对象,从参数类型推导目标类型。 对于每个Types...中的Ti,Vtypes...中的对应类型Vi为std::decay<Ti>::type,除非应用std::decay对某些类型X导致std::reference_wrapper<X>,该情况下推导的类型为X&。
在cppref中apply其实就给了提示std::apply - cppreference.com 我们可以利用不定长参数的展开来获得调用std get ,最终获得tuple中的每一个值。 现在,我们需要构建一个从0,到N-1的不定长序列,我们可以使用标准库里的东西,不过这里我还是选择手写一个。。。
考虑一下invoke(g, tup)和apply(f, tup)之间的区别,前者不解包tuple,后者则解包tuple。有时两者都需要,所以需要用某种方式表达出来。 通过解包tuple来调用函数是相当有用的,即使可以采用std::invoke,也会是一个大麻烦。将tuple转换为参数包不是一项简单的操作。apply的实现看起来像这样(来自cppref): namespace ...
通过std::make_tuple创建tuple对象,对应的类型std::tuple<int, char const*, double, int>; 也可以通过std::tuple<int, int, std::string> t {0, 1, "Test"}直接创建对象; 如果希望创建的是类型引用,则可以修改: intn=1;autot=std::make_tuple(10,"Test",3.14,std::ref(n));// 对n修改则tuple...
//zh.cppreference.com/w/cpp/utility/tuplestaticstd::tuple<double,char, std::string>get_student(intid){if(id ==0)returnstd::make_tuple(3.8,'A',"Lisa Simpson");if(id ==1)returnstd::make_tuple(2.9,'C',"Milhouse Van Houten");if(id ==2)returnstd::make_tuple(1.7,'D',"Ralph ...