如何正确编写保留引用与const性的结构化绑定传参函数?
核心问题:如何正确编写一个函数,使其应用结构化绑定并将得到的变量传递给另一个函数,同时正确保留引用、const性等属性?
代码示例
template<?> <?> call_with( ? && object, ? && function ){ auto ? [ x1, x2, x3 ] = ?( object ); return ?( (?(function))( ?(x1), ?(x2), ?(x3) ); }
细分问题
- (1)
auto [ x1, x2, x3 ] = ...、auto & [ x1, x2, x3 ] = ...与auto && [ x1, x2, x3 ] = ...三者有何区别?此场景应选用哪种? - (2) 若
object作为右值传递,将x1、x2、x3也视为右值是否合理?(可能类型含T、T &、T &&、T const &等)。左值是否有类似情况?如何实现? - (3)
function的“正确”类型应如何定义?示例中使用了转发引用。 - (4) 是否需要执行其他操作?
- 结构化绑定声明前移动或转发
object - 对
function执行类似操作 - 对
function的返回值执行类似操作
- 结构化绑定声明前移动或转发
- (5) 如何定义返回类型,避免丢失
function可能返回的引用?
内容的提问来源于stack exchange,提问作者Sam Coutteau
相关产品推荐
相关产品推荐

