首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何添加到std::variants?

如何添加到std::variants?
EN

Stack Overflow用户
提问于 2018-06-26 17:44:56
回答 1查看 237关注 0票数 2

所以我有:

代码语言:javascript
复制
typedef std::variant<int,float,std::string> VarType;

我希望能够做到:

代码语言:javascript
复制
VarType a = 1;
VarType b = 1;
VarType c = a + b;

当类型混合时,它抛出是很酷的。

EN

回答 1

Stack Overflow用户

发布于 2018-06-26 17:45:46

代码语言:javascript
复制
VarType c = std::get<int>(a) + std::get<int>(b);

更一般的情况:

代码语言:javascript
复制
VarType c = std::visit([](auto x, auto y) -> VarType 
                       { 
                           if constexpr(!std::is_same_v<decltype(x), decltype(y)>)
                           {
                               throw;
                           }
                           else
                           {
                               return x + y; 
                           }
                       }, a, b);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51039758

复制
相关文章

相似问题

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