【发布时间】:2015-02-27 22:24:06
【问题描述】:
我正在阅读关于左值/右值引用的好教程。如果我在类型推导时理解正确,T&& 之类的东西可以同时接受左值和右值。
但是有没有办法在没有泛型类的情况下实现这一点?我想避免重复我所有接受左值和右值的方法。当然还要避免按值传递大对象。
【问题讨论】:
-
为什么不要类型扣除?
-
因为我不需要它。在我的课堂上没有什么是通用的。
-
我不认为你所有的方法都需要 l 和 r 值。
-
必须为这两种情况生成不同的代码。例如,对于右值,您可能想要移动,而对于左值,您想要复制。这可以通过模板来实现。如果您不需要并且想要额外的通用性,您可以约束模板。例如,
template<typename T, enable_if_t< is_same_v<decay_t<T>, some_type> >> void my_func(T&&); -
@user1535111:不,不要……
标签: c++ c++11 reference rvalue-reference lvalue