我有一个代理容器类封装了一个可移动对象,并希望代理能够在自身被移动时隐式返回基础对象的右值引用。
我相信我可以按照n2439提案"将移动语义扩展到*this"来实现此行为,但它在gcc的发布版本中尚不可用,而且可能要等一段时间。
下面的代码是我最终的目标,但目前还不可能。在此功能可用之前,是否有任何等效的解决方法?
我相信我可以按照n2439提案"将移动语义扩展到*this"来实现此行为,但它在gcc的发布版本中尚不可用,而且可能要等一段时间。
下面的代码是我最终的目标,但目前还不可能。在此功能可用之前,是否有任何等效的解决方法?
template< class T >
struct movable_proxy {
operator T&&() && {
return std::move(value);
}
operator const T&() const& {
return value;
}
private:
T value;
};
convert_proxy(p)
,这个函数会针对右值和左值进行重载,返回T&&
或者const T&
...但这样会使代理的使用变得不透明,这可能不是你想要的。 - Jonathan Wakely&&
和&
修饰符,你会失去什么? - Andy Prowlx > 0
的4.8.x版本中也会有。 - Jonathan Wakely