结构化绑定的函数声明

Kla*_*aus 2 c++ c++17 structured-bindings

结构化绑定只能与某种"struct"一起用作返回值吗?

回馈任何类/结构,例如元组在这里工作正常:

auto f() 
{   
    return std::make_tuple(1,2.2);
}
Run Code Online (Sandbox Code Playgroud)

是否有能够实现以下目标的东西:

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

Nat*_*ica 5

你不能拥有像这样的结构

auto f() -> [int,double]
Run Code Online (Sandbox Code Playgroud)

因为那里没有类型信息.尾部返回需要一个type-id,它被定义为一个type-specifier-seq abstract-declarator opt

由于您必须在返回类型中指定类型,因此您可以使用类似的类型

auto f() -> std::tuple<int,double>
Run Code Online (Sandbox Code Playgroud)

指定要返回a intdouble.

另请注意,结构化绑定可用于具有公共数据成员,类似对象的元组和数组的类.