variant 基础用法
我们以如下声明为例:
std::variantstd::string> x, y;
如上简单声明类型为std::variant的x, y...需要注意的是区别于前面的单参数operator()操作符, ponder中的LessThanVisitor和EqualVisitor都是双参数的, 这个其实使用也比较简单:
std::variant<int...a < b;
},
}, abc, def);
std::visit本身是一个variadic template的实现, 我们在std::visit调用的时候传入多个参数即可完成双操作数的..., 存储的值类型与目标值不一致的时候, 会直接使用ponder_ext中封装的ValueMapper来完成U到T的转换(转换失败会直接抛异常)....(arg) << ' '; },
}, var);
通过引入的overload 变参模板类,
template<class...