structured-bindings相关内容

结构化绑定和转发引用能很好地混合吗?

我知道我可以做到 auto&& bla = something(); 根据something返回值的const程度,我会为bla获取不同的类型。 这是否也适用于结构化绑定的情况,例如 auto&& [bla, blabla] = something(); 我想是的(结构化绑定搭载在auto初始值设定项上,其行为如下),但我找不到明确的“是”。 更新:初步测试似乎达到 ..

C ++ 17中的初始化程序列表和结构化绑定推论含糊不清

我总是避免像下面这样的初始化 const auto&x = a,y = b;const int * const x = ptr_1,* const y = ptr_2;//wot 由于引用限定符和指针限定符不适用于两个初始化.既然这是初学者学习的第一手东西,它的含糊不清让我感到以下内容更加清晰,并且不需要读者多加思考 const auto&x = a;const auto&y = b; ..
发布时间:2021-04-20 19:00:11 C/C++开发

为类提供类似元组的结构化绑定访问

我正在尝试为类支持类似元组的结构化绑定访问.为简单起见,在本文的其余部分中,我将使用以下类: struct测试{整数v = 42;}; (我知道该类支持开箱即用的结构化绑定,但让我们假设它不支持.) 要启用对元组的访问权限 Test的成员,我们必须专门处理 std :: tuple_size 和 std :: tuple_element : 命名空间标准{模板struct tu ..
发布时间:2021-04-20 18:59:34 C/C++开发

为什么std :: initializer_list不支持std :: get<>,std :: tuple_size和std :: tuple_element

为什么 std :: initializer_list 不支持 std :: get , std :: tuple_size 和 std::tuple_element ?像现在一样,它在 constexpr 表达式中经常使用,例如 std :: max({1、2、3、4、5}); 如果它做得很酷,可能会发生以下情况 auto [x,y] = {1,2}; 那么为什么 std : ..
发布时间:2021-04-20 18:46:02 C/C++开发

在C ++ 17中解压缩可变参数元组

在c ++ 17(也许是C ++ 2a)中,有什么比用结构化绑定?有什么提示吗?我可以接受一个答案,为什么我不能在这里使用这些提到的C ++ 17功能-但我更喜欢“解决方案". 解决方案 自C ++ 14起,我们具有通用的lambda,而自C ++ 17起,我们具有有效的折叠表达式和 std :: apply 隐藏通常的拆包逻辑: std :: apply([](auto& ... i ..

结构化绑定中的const引用是否会延长分解对象的寿命?

是否编写 const auto& [a,b] = f(); 确保延长从 f()返回的对象或至少对象 a 和 b 是否绑定到?阅读该提案,我看不到任何明显的内容除非另有说明,否则请确保使用该语言。但是,以下内容不会延长临时文件的生存期,因此我看不到它将如何涵盖: const auto& a = std :: get(f()); 在本文的顶部,似乎表明已将其覆盖 ..
发布时间:2020-09-28 02:06:16 C/C++开发

结构化绑定和tie()

给出以下声明: int a [3] {10,20,30}; std :: tuple b {11,22,33}; 我可以使用结构化绑定声明来解码 a 和 b : auto [x1,y1,z1] =一种; auto [x2,y2,z2] = b; 但是如果 x1 , y1 等已经存在,该怎么办? st ..
发布时间:2020-09-28 01:59:54 C/C++开发

嵌套结构化绑定是否可能?

假设我有一个对象类型 std :: map>数据; 是否有可能以嵌套方式访问元素类型(即,在range循环中使用)像这样 为(auto [str,[my_int,my_float]]:data)/ *做某事* / 解决方案 不行,不可能。 我清楚地记得在某处 ..
发布时间:2020-09-28 01:56:05 C/C++开发

什么是结构化绑定的用例?

C ++ 17标准引入了新的结构化绑定功能,最初在2015年建议及其句法 。外观广泛地稍后进行了讨论。 在阅读文档时会立即想到它们的某些用途。 聚集分解 我们声明一个元组: std :: tuple t(42,“ foo”); 使用结构化绑定在一行中可以轻松获得命名的元素副本: auto [i,s] = t; ..
发布时间:2020-09-28 01:53:08 C/C++开发

具有std :: minmax和rvalues的结构化绑定

在将 std :: minmax 与结构化绑定一起使用时,我遇到了一个相当微妙的错误。似乎传递的右值不会总是像人们期望的那样被复制。最初,我在自定义容器上使用了 T运算符[]()const ,但它与文字整数似乎相同。 #include #include #include int main() { auto [am ..
发布时间:2020-09-27 06:27:40 C/C++开发