在考虑如何解决std::min 时,我的一个想法是为将要删除的rvalue添加一个重载(实际上是3-每个组合)。问题是,T&&将是转发引用,而不是rvalue引用。我想将这个问题与std::min区分开来,使它更加笼统。std::min可以作为一个例子,为什么您需要这样的东西。让我们简化和概括这个问题:
// this has the same problem as `std::m
“接口”和“实现”都是由模板类定义的。)...); // args are no forwarding references};
forward只有一个用例:要将类型转发引用(T&&)模板化的函数参数转换为调用方用来传递它的值类别与在转发引用上使用std::move相比,它的后果不那么可怕,如果使用正确的模板参数,甚至可以按预期