它还有一个特殊的类型 std::nullopt_t, 这个类型与std::nullptr_t一样, 只有一个值, std::nullopt, optional在没有设置值的情况下类型就是std::nulopt_t..., 值为std::nullopt.
2.1 has_value()
  我们可以通过has_value()来判断对应的optional是否处于已经设置值的状态, 代码如下所示:
int main()
{...\n";
  }
}
2.2 访问optional对象中的数据
  我们可以通过value(), value_or()来获取optional对象中存储的值, value_or()可以允许传入一个默认值,...如果optional为std::nullopt, 则直接返回传入的默认值....std::variant, 上面介绍的访问方式在std::variant中包含的类型较多的时候, 业务代码写起来会特别的费力, 标准库提供了通过std::visit来访问variant的方式, 这也是大多数库对