假设我有以下代码:
template<class T>
struct NodeBase
{
T value;
NodeBase(T &&value)
: value(value) { }
};
然后我继承它:
template<class T>
struct Node : public NodeBase<T>
{
Node(T &&value)
: NodeBase( WHAT_GOES_HERE (value)) { }
};
WHAT_GOES_HERE
应该使用std::forward<T>
还是std::move
?为什么?
Node<T&>
是什么意思?你想从哪种对象构造它?Node<T&&>
、Node<T>
、Node<T const&>
和Node<T const&&>
呢? - Yakk - Adam NevraumontNodeBase
只接受右值引用,然后从中复制?这似乎有些违反直觉,不是吗? - Mooing DuckNodeBase
_仅_接受右值引用。 - Mooing DuckT
是std::string
的情况。在这种情况下,NodeBase
只接受std::string&&
,然后复制它。对吗? - Mooing Duck