c++ - 如何添加到 std::variants?
问题描述
所以我有:
typedef std::variant<int,float,std::string> VarType;
我希望能够做到:
VarType a = 1;
VarType b = 1;
VarType c = a + b;
当类型混合时,它抛出它很酷。
解决方案
VarType c = std::get<int>(a) + std::get<int>(b);
更一般的:
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);
推荐阅读
- c# - Image.FromFile("image_path") 抛出一些 JPEG 文件的内存不足异常
- java - 如何对齐 JPanel 在另一个 JPanel 下方居中?
- php - ErrorException 数组到字符串的转换 Laravel - 将 JSON 导入 MySQL
- workflow - 源限定符允许值超过 Informatica 中定义的大小
- c# - 可以在类型级别而不是单个 C# 属性设置器中添加验证吗?
- transliteration - 谷歌输入工具是否可用于网站输入翻译?
- spring - 春季数据 Redis。JPA Repository findBy 有时无法获取现有记录
- rust - 如何创建一个返回泛型类型的修改实例的泛型函数?
- node.js - 从 google doc api 返回时,为什么方程对象在 json 中为空?
- python - python3 ConnectionRefusedError: [Errno 61] 执行线程 http.server 时连接被拒绝