9得票1回答
在C++17中展开可变元组

有没有比经典的C++14使用std::index_sequence解包可变元组更好的方法,例如C++17(或者C++2a)? 有没有比下面这种方式更好的方法: template <typename ...I> class MultiIterator { public: ...

9得票1回答
现有变量无法使用结构化绑定吗?

在使用结构化绑定时,是否可以将已经存在的变量作为返回值的目标? auto f() { return std::make_tuple(1,2.2); } int main() { int x; double z; [ x, z ] = f(); // Di...

9得票2回答
为什么我需要移动 `std::unique_ptr`。

以下是给定的代码: #include <iostream> #include <memory> struct A {}; struct B : public A {}; std::pair<bool, std::unique_ptr<B>&gt...

9得票1回答
Structured binding 违规

代码如下: #include <tuple> int main() { auto [a] = std::make_tuple(1); return [a]() -> int { return a; }(); } 在clang 12中会产生错误: ...

9得票1回答
为一个类提供类似元组的结构绑定访问

我想为一个类提供类似元组的结构化绑定访问支持。为了简单起见,接下来的文章中我将使用以下类: struct Test { int v = 42; }; 我知道这个类已经支持结构化绑定,但是假设它不支持。为了允许类似元组的访问Test的成员,我们需要特化std::tuple_size...

9得票2回答
使用结构化绑定声明的变量的完美转发

我有一个结构体 template <typename T> struct Demo { T x; T y; }; 我正在尝试编写一个类似于std::get的通用函数,用于元组,并且根据编译时的索引I返回结构体的第I个成员的左值引用(如果使用左值DemoStru...

8得票1回答
结构化绑定适用于哪些类型的结构体?

我浏览了这篇关于结构化绑定的论文:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0144r0.pdf,但我并没有很好地理解该语法允许绑定哪些类型的结构体。我的最佳猜测是该结构体必须是一个聚合类型,或者只包含公共数据成员。 还...

8得票1回答
在结构化绑定定义中引入中间变量?

在[dcl.struct.bind] 9.6.4中,当初始化器是具有正确定义的std​::​tuple_­size<E>​::​value的类类型时,定义了结构化绑定: ...变量按如下唯一名称ri引入: S Ui ri = initializer ; 每个vi都是Ti类型的l...

7得票1回答
为什么GCC会诊断结构化绑定的未使用变量而Clang不会?

让我们从一个最简单的例子开始: #include <utility> int main() { auto [a, b] = std::pair(1, 'A'); return a; } 使用GCC 7.3编译,通过-std=c++17和-Wunused-va...

7得票2回答
为什么lambda表达式的捕获列表不能使用结构化绑定进行分解

在你扔掉腐烂的番茄之前 我知道lambda分解的实际应用目前受到限制,因为人们无法找到一种易于替换失败的方式来检查分解变量中隐藏的lambda捕获数量。这只是一个理论上的问题,因为我未能找到任何涵盖捕获成员变量访问修饰符的标准部分。 例子 int main() { int a; ...