11得票2回答
为什么使用std::tuple时不能保证复制省略?

我预期在C++20中,以下代码在打印A和B之间不会输出任何内容(因为我预期有保证的RVO会发生)。但实际输出为: A Bye B C Bye Bye 因此可以推断出一个临时对象被创建了。#include <iostream> #include <tuple> str...

15得票2回答
通过公共成员函数对于不是结构体或元组的自定义类型进行结构化绑定。

我正在学习Herb Sutter的 A journey: Toward more powerful and simpler C++ programming 文章中的结构绑定部分。 为了理解这个概念,最好写一个程序。然而我尝试了一下,却遇到了一些错误。 我只是想试试如何在具有私有...

8得票2回答
std::get在rvalue-reference元组上的行为是否危险?

下面这段代码: #include <tuple> int main () { auto f = [] () -> decltype (auto) { return std::get<0> (std::make_tuple (0)); }; ...

22得票1回答
返回一个2元组是否比std::pair不高效?

考虑以下代码:#include <utility> #include <tuple> std::pair<int, int> f1() { return std::make_pair(0x111, 0x222); } std::tuple<...

14得票1回答
标准为什么允许将一个右值引用的元组赋值给一个左值引用的元组?

似乎含有一个或多个引用的std::tuple在构建和赋值方面存在意外行为(特别是复制/移动构造和复制/移动赋值)。它与std::reference_wrapper(更改所引用的对象)和具有成员引用变量的结构(赋值运算符已删除)的行为不同。它允许方便的std::tie类似于Python的多返回值...

12得票3回答
std::get()如何与std::tuple一起使用?

尝试自己编写std::get<N>(std::tuple)方法后,我不确定编译器是如何实现它的。我知道std::tuple有一个像这样的构造函数:tuple(Args&&... args); 但是args...被赋值给了什么?我认为这对于了解std::get()的工...

21得票4回答
元组/解构的返回值优化

我正在研究元组/绑定返回值优化,但我观察到的行为与我预期的不同。在下面的示例中,我希望运用移动语义,事实上它的确发挥了作用,但仍存在一次复制操作。以下是优化后的输出:Test duo output, non_reference tuple Default constructor invoked...

7得票3回答
如何遍历 TR1 元组

由于被困在TR1领域,我需要在一个特定类型的对象上执行一些操作来进行测试。我有几个类似下面这样的元组类型定义: typedef std::tr1::tuple< bool , signed char ...

12得票3回答
将元组连接作为类型

我正在尝试练习一些模板编程。也许有一种标准的方式来做这个,如果有的话,我会感激这样的答案,但我的主要目标是练习模板编程技巧,所以我试图自己实现它: 我需要将多个元组连接起来,但作为类型,而不是像std::cat_tuple那样。所以我需要像cat<std::tuple<int, ...

27得票2回答
C++11中返回元组的最佳方法是什么?

我想从一个函数中返回一些值,并将它们打包在元组中。因此,我有两种函数声明的可能性:std::tuple<bool, string, int> f() { ... return std::make_tuple(false, "home", 0); } 和std::tuple&...