2

结构化绑定只能与某种“结构”一起使用作为返回值吗?

归还任何类/结构,例如这里的元组可以正常工作:

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

有没有什么东西可以实现:

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

1 回答 1

5

你不能有一个像

auto f() -> [int,double]

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

由于您必须在返回类型中指定一个类型,您可以使用类似

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

指定您要返回 aintdouble

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

于 2017-06-26T12:58:42.730 回答