【发布时间】:2019-10-11 17:21:37
【问题描述】:
C++17 提供了std::variant 和std::any,它们都能够在一个对象下存储不同类型的值。对我来说,它们在某种程度上很相似(是吗?)。
除此之外,std::variant 还限制条目类型。为什么我们应该更喜欢std::variant 而不是更易于使用的std::any?
【问题讨论】:
-
std::variant只适用于一组预定义的类型,而std::any字面上适用于任何类型。这完全取决于您的用例,哪个是更好的选择。 -
@πάνταῥεῖ:什么是预定义的类型集?
-
粗略地说,第一个是编译时,第二个是运行时。
-
没有
std::visit()forstd::any;恕我直言,这应该是在可能的情况下更喜欢std::variant的正当理由。 -
这就像
void*与联合 imo 的对比