上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.13 使用结构化绑定处理多值返回
函数返回多个值的情况非常常见,但是C++中没有一流的解决方案可以直接实现这一点。开发人员必须做出选择:通过引用函数形参返回多个值,或者定义一个包含多值的结构,或者返回std::pair或std::tuple。前两个使用命名变量,它们的优点是清楚地指明返回值的含义,缺点是必须显式地定义它们。std::pair的成员为first和second,而std::tuple的匿名成员只能通过函数调用访问,但可以使用std::tie()复制到命名变量。不过,这些解决方案都不是很理想。
C++17将std::tie()的语义扩展为一级核心语言特性,支持将元组的值解包到命名变量中。这个特性称为结构化绑定。