网上有不少std::variant与std::optional的介绍, 基础的部分基本都会讲到, 这里也先简单的过一下std::variant与std::optional的常规用法.
1. std::...s = std::get(y);
当然, 如果std::variant中当前存储的不是对应Type的值, 则会抛出std::bad_variant_access类型的异常:
try
{...;
}
1.4 更安全的获取方法
除了会引发异常的std::get, 也有无异常的 std::get_if() 方法, 当然, 需要自行判断返回的指针类型是否为空:
int* i = std::...).out1 << endl;
3. std::visit() 方式
对于optional来说, 简单的获取值的方法足够用了, 但对于更复杂的std::variant, 上面介绍的访问方式在std:...Ts> overloaded(Ts...) -> overloaded;
简单的两行代码, 我们的std::visit()达到了类似派发的效果, 那么这两行代码是如何实现相关的功能的呢