【发布时间】:2020-06-15 09:30:49
【问题描述】:
有一个简单的包装结构
template<typename T>
struct named_value {
using type = T;
T value{};
string_view name = "unnamed_value";
constexpr explicit operator T&(){ return value; }
constexpr explicit operator T const&()const{ return value; }
constexpr explicit operator T &&()&&{ return std::move(value); }
template<typename U=T>
constexpr named_value& operator=(U&&v){ value = std::forward<U>(v); return *this; }
friend auto operator<<(std::ostream& os, named_value const& a) ->ostream&
{
return os<<a.name<<":"<<a.value;
}
};
在这里,我尝试对operator= 使用通用引用,以减少重载(即for ref、rval ref、const ref)。这是正确的方法吗?
【问题讨论】:
-
named_value& - 已修复
-
感谢您删除 cmets。
-
返回 *this。固定
-
It should be
operator T&&() && { return std::move(value); }. -
@Evg,谢谢,已修复
标签: c++