我在可移动对象周围有一个代理容器类,并希望该代理能够隐式地产生对基础对象的右值引用,但仅当代理自身被移动时才是如此。
我相信我将能够按照建议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)
哪个重载了rvalues和lvalues以返回T&&
or或const T&
...,但这使代理的使用不透明,这可能不是您想要的