我有一个围绕可移动对象的代理容器类,并希望代理能够隐式产生对基础对象的右值引用,但仅在移动代理本身时。
我相信我将能够按照提案 n2439 "Extending move semantics to *this"来实现此行为,但它在 gcc 的版本中尚不可用,并且暂时不会。
下面的代码是我最终的目标,但目前还不可能。在我可以使用此功能之前,是否有任何等效的解决方法?
template< class T >
struct movable_proxy {
operator T&&() && {
return std::move(value);
}
operator const T&() const& {
return value;
}
private:
T value;
};