结构化绑定的函数声明

function declaration for structured bindings

结构化绑定只能与某种 "struct" 作为 return 值一起使用吗?

返回 class/struct 中的任何一项,例如这里的元组工作正常:

auto f() 
{   
    return std::make_tuple(1,2.2);
}

有没有什么东西可以实现类似的东西:

auto f() -> [int,double]
{
    return { 1, 2.2 }; //  maybe with or without braces arround
}

你不能有像

这样的结构
auto f() -> [int,double]

因为那里没有类型信息。尾随 return 需要一个 type-id ,它被定义为 type-specifier-seq abstract-declaratoropt

因为你必须在 return 类型中指定一个类型你可以使用像

auto f() -> std::tuple<int,double>

指定你想要return一个intdouble

另请注意,structured bindings 可用于具有 public 数据成员、类似元组的对象和数组的 类。