首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >std::variant的显式转换运算符与get< T >()函数

std::variant的显式转换运算符与get< T >()函数
EN

Stack Overflow用户
提问于 2016-09-19 18:17:27
回答 2查看 511关注 0票数 3

除了(或者甚至代替) get< T >()自由函数(draft的第568页)之外,让std::variant类的一部分成为显式转换(到替代)操作符重载设置有什么缺点?

代码语言:javascript
运行
复制
template<class... Types>
class variant
{
    template<class T>
    explicit operator const T& () const&;
    template<class T>
    explicit operator T& () &;
    template<class T>
    explicit operator const T&& () const &&;
    template<class T>
    explicit operator T&& () &&;
};

在某些情况下是不安全的吗?为什么我们需要自由的get()函数(即“类型”版本,而不是“索引”版本),当variant公开一个值语义时(引用自草案):

变量对象保存和管理值的生命周期。

使一个变量显式地转换为alternative,但仍然隐式地从一个alternative构造,这还不够吗?

我知道,接口的一致性是一件好事(我记得我们需要get< I >()get< T >()),但我认为更自然的方法是通过简单地转换为包含备用值,而不是对变体实例应用某些函数专门化。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39570686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档