C++23 std::forward_like

std::forward 需要我们提供一个模板参数,它能把同类型(不包括值类别)的参数转发出去。

std::forward_like 则有两个模板参数,第一个参数需要显式提供,第二个参数从实参中推导。它从模板参数中获得转发需要使用的引用类型,并将实参转发出去。这意味着实参和模板参数的类型可以不一致!

std::forward_like 非常适合转发子对象的场合,因为它能让子对象和本身的左右值类型相同。比如在显式对象参数中可以使用。