有一个函数返回一对或一个元组。它的调用结果必须保存在先前创建的变量中。这可以在不创建中间对象的情况下完成吗?
// Функция возвращает пару.
std::pair<int, int> Foo() { return { 1, 2 }; }
...
// Распаковка пары в новые переменные.
auto [one, two] = Foo();
member_one_ = one; // Затем записываем результат в уже существующие переменные.
member_two_ = two;
在此示例中,您必须创建不必要的变量一和二,它们并不是真正需要的。相反,我希望看到类似的东西。
// Записываем возвращаемые значения сразу в необходимые переменные.
[ member_one, member_two ] = Foo();
结构化绑定无法解包到现有变量中。
另外,请注意它不会创建多个单独的变量,而是创建一个 - 未命名(方括号中的名称指的是它的字段)。尽管在您的情况下它没有任何改变。
解决方法是:
std::tie(member_one, member_two) = Foo();。即使在 C++11 中也能工作。