【问题标题】:function declaration for structured bindings结构化绑定的函数声明
【发布时间】:2017-06-26 12:30:55
【问题描述】:

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

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

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() -> std::tuple<int,double>
  • 正如 Nathan 所说,自 C++11 以来,任何临时聚合需求都得到满足。

标签: c++ c++17 structured-bindings


【解决方案1】:

你不能有这样的结构

auto f() -> [int,double]

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

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

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

指定您要返回intdouble

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多