草庐IT

make_tuple

全部标签

c++ - 使用 std::make_tuple 时如何避免构造函数的未定义执行顺序

如果构造函数的执行顺序很重要,我该如何使用std::make_tuple?比如我猜A类的构造函数和B类的构造函数的执行顺序是未定义的:std::tuplet(std::make_tuple(A(std::cin),B(std::cin)));我在阅读了对该问题的评论后得出了这个结论Translatingastd::tupleintoatemplateparameterpack这就是说这个templatestd::tupleparse(std::istream&stream){returnstd::make_tuple(args(stream)...);}实现具有未定义的构造函数执行顺序

c++ - 使用 make_pair(_Ty1&& _Val1, const _Ty2& _Val2) 在 C++11 中进行重大更改

考虑以下C++程序#include#includeintmain(){inta=5,b=7;autopair=std::make_pair(a,b);return0;}使用VC11和gcc-4.7.2fails有不同的错误,虽然它似乎是相关的,而且VC11错误消息更有意义Youcannotbindanlvaluetoanrvalue我从这次失败中了解到的是VC11和我想gcc-4.7.2只有一个std::make_pairmake_pair(_Ty1&&_Val1,const_Ty2&_Val2)实现,它只能接受一个右值引用。之前的VC++版本示例VC10有两个版本,一个接受左值,另一

c++ - 使用 make_pair(_Ty1&& _Val1, const _Ty2& _Val2) 在 C++11 中进行重大更改

考虑以下C++程序#include#includeintmain(){inta=5,b=7;autopair=std::make_pair(a,b);return0;}使用VC11和gcc-4.7.2fails有不同的错误,虽然它似乎是相关的,而且VC11错误消息更有意义Youcannotbindanlvaluetoanrvalue我从这次失败中了解到的是VC11和我想gcc-4.7.2只有一个std::make_pairmake_pair(_Ty1&&_Val1,const_Ty2&_Val2)实现,它只能接受一个右值引用。之前的VC++版本示例VC10有两个版本,一个接受左值,另一

c++ - 当我在编译时不知道时,如何从 std::tuple 获取第 i 个元素?

我有一个std::size_t类型的变量i和一个std::tuple类型的元组。我想获取元组的i-th元素。我试过这个://bindings...isoftypeconstT&...autobindings_tuple=std::make_tuple(bindings...);autobinding=std::tuple_element(bindings_tuple);但是我得到这个编译错误,说第一个模板参数必须是一个整数常量表达式:error:non-typetemplateargumentoftype'std::size_t'(aka'unsignedlong')isnotanin

c++ - 当我在编译时不知道时,如何从 std::tuple 获取第 i 个元素?

我有一个std::size_t类型的变量i和一个std::tuple类型的元组。我想获取元组的i-th元素。我试过这个://bindings...isoftypeconstT&...autobindings_tuple=std::make_tuple(bindings...);autobinding=std::tuple_element(bindings_tuple);但是我得到这个编译错误,说第一个模板参数必须是一个整数常量表达式:error:non-typetemplateargumentoftype'std::size_t'(aka'unsignedlong')isnotanin

c++ - 如何在 C++ 11 中迭代 std::tuple

这个问题在这里已经有了答案:Howcanyouiterateovertheelementsofanstd::tuple?(22个回答)关闭7年前。我做了以下元组:我想知道我应该如何迭代它?有tupl_size(),但是阅读文档后,我不知道如何使用它。我也有搜索所以,但问题似乎是围绕Boost::tuple。autosome=make_tuple("Iamgood",255,2.1); 最佳答案 templatevoidfor_each_in_tuple(conststd::tuple&tuple,Ffunc,std::index_s

c++ - 如何在 C++ 11 中迭代 std::tuple

这个问题在这里已经有了答案:Howcanyouiterateovertheelementsofanstd::tuple?(22个回答)关闭7年前。我做了以下元组:我想知道我应该如何迭代它?有tupl_size(),但是阅读文档后,我不知道如何使用它。我也有搜索所以,但问题似乎是围绕Boost::tuple。autosome=make_tuple("Iamgood",255,2.1); 最佳答案 templatevoidfor_each_in_tuple(conststd::tuple&tuple,Ffunc,std::index_s

c++ - 为什么使用 std::make_* 而不是构造函数更好?

STL中有一些以make_前缀开头的函数,如std::make_pair、std::make_shared、std::make_unique等。为什么使用它们而不是简单地使用构造函数更好?autopair2=std::pair(1,2.0);autopair3=std::make_pair(1,2.0);std::shared_ptrpointer1=std::shared_ptr(newint(10));std::shared_ptrpointer2=std::make_shared(10);我只是看到这些函数使代码更短,但仅此而已吗?还有其他优势吗?这些功能使用起来更安全吗?

c++ - 为什么使用 std::make_* 而不是构造函数更好?

STL中有一些以make_前缀开头的函数,如std::make_pair、std::make_shared、std::make_unique等。为什么使用它们而不是简单地使用构造函数更好?autopair2=std::pair(1,2.0);autopair3=std::make_pair(1,2.0);std::shared_ptrpointer1=std::shared_ptr(newint(10));std::shared_ptrpointer2=std::make_shared(10);我只是看到这些函数使代码更短,但仅此而已吗?还有其他优势吗?这些功能使用起来更安全吗?

c++ - 带有 std::ref 参数的 std::tie 和 std::make_tuple 有什么区别?

写表达式有语义上的区别std::tie(x,y,z)还有下面的表达式?std::make_tuple(std::ref(x),std::ref(y),std::ref(z))如果有,有什么区别?顺便说一句,这个问题和Whatisthedifferencebetweenassigningtostd::tieandtupleofreferences?不一样。因为引用元组不是通过std::ref创建的,而是通过显式指定类型来创建的。 最佳答案 这两个表达式之间几乎†没有功能上的区别。tie()只是更短,而make_tuple()更通用。根