C++ 中的一个线性元组/对解包,多次重用相同变量

问题描述 投票:0回答:1

我已经看到了是否有一个单行代码可以将元组/对解压到引用中?并且知道如何将元组/对中的值解压到一行中,如下所示

auto [validity, table] = isFieldPresentAndSet(r, "is_federated");

这里

isFieldPresentAndSet
返回一个元组。

现在我想在多次连续调用

isFieldPresentAndSet
中重用这两个变量,如下所示

auto [validity, table] = isFieldPresentAndSet(r, "is_federated");
auto [validity, table] = isFieldPresentAndSet(r, "gslb_sp_enabled");

然后检查

validity
table
的值。但这给了我编译错误,因为我第二次重新定义
validity
table
变量。如果将第二行更改为

[validity, table] = isFieldPresentAndSet(r, "gslb_sp_enabled"); 

validity, table = isFieldPresentAndSet(r, "gslb_sp_enabled"); 

它仍然给我编译错误。

有什么办法可以做到这一点吗?

c++ c++17 std-pair
1个回答
15
投票

您可以使用

std::tie
。它返回一个引用元组,这使得赋值成为可能:

std::tie(validity, table) = isFieldPresentAndSet(r, "gslb_sp_enabled");
© www.soinside.com 2019 - 2024. All rights reserved.