c++ - 仅对具有结构化绑定(bind)的一个变量使用 auto

标签 c++ c++17

我正在尝试使用结构化绑定(bind)更新传递给函数的变量:

#include <iostream>
#include <tuple>
#include <utility>

std::pair<int, double> func(double y)
{
    return {1, 1.3+y};
}

int main() {
    double y = 1.0;
    auto [x, y2] = func(y);
    y = y2;
    std::cout << "x = " << x << ", y = " << y << '\n';
    return 0;
}
是否可以避免额外的分配 y = y2并使用类似的东西
[auto x, y] = func(y); // this does not work
或者
std::tie(auto x, y) = func(y); // this does not work

最佳答案

第三种选择:

decltype(func(y).first) x;
std::tie(x, y) = func(y);

关于c++ - 仅对具有结构化绑定(bind)的一个变量使用 auto,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64861092/

相关文章:

c++ - 为什么类型特征不适用于 namespace 范围内的类型?

c++ - 类型特征以检查某些类型是否派生自类模板

c++ - 微 Controller 上 C 和 asm 的替代品

c++ - C++ 中的 Bigint 减法

c++ - 在C++中将输入分离为多个变量

c++ - 以之前的大小显示 QDialog

c++ - std::transform 比 for 循环慢

c++ - 一旦找到所需的替代方案,就跳出 std::visit

c++ - 提取 __VA_ARGS__ 的第一个参数

c++ - 部分模板实例化