网上有不少std::variant与std::optional的介绍, 基础的部分基本都会讲到, 这里也先简单的过一下std::variant与std::optional的常规用法.
1. std::...;
}
1.4 更安全的获取方法
除了会引发异常的std::get, 也有无异常的 std::get_if() 方法, 当然, 需要自行判断返回的指针类型是否为空:
int* i = std::...).out1 << endl;
3. std::visit() 方式
对于optional来说, 简单的获取值的方法足够用了, 但对于更复杂的std::variant, 上面介绍的访问方式在std:..., 重载参数的类型决定调用的分支, 存储的值类型与目标值不一致的时候, 会直接使用ponder_ext中封装的ValueMapper来完成U到T的转换(转换失败会直接抛异常)....using其实早在C++11的时候就加入到标准了, 但variadic template参数展开支持using表达式, 是17才支持的特性, 像如下代码声明:
using Ts::operator(