std :: variant可以定义多少种类型?

时间:2016-09-30 12:48:56

标签: c++ variant c++17

我已经了解到c ++ 17中有std::variant类型。 看起来变体容器不支持预定义的数据类型,但是对于每种变体类型,用户可以定义自己的数据类型集。

std::variant<int, float> v;

我想知道,类型列表可以多长时间?库是否具有用于Aleksandrescu方式的最大参数数量的预定义模板,或者是编译器支持的变体,类型的数量不受限制?

1 个答案:

答案 0 :(得分:5)

模板参数的最大数量受编译器实现的限制。

The C++ standard says

  

由于计算机是有限的,因此C ++实现不可避免地受到程序大小的限制   可以成功处理。每个实施都应记录已知的限制。这个文件   心理可以引用它们存在的固定限制,说明如何计算可变限值作为可用的函数   资源,或说固定限制不存在或未知。

     

限制可能会限制包含下述数量或其他数量的数量。 括号中的数字   建议将每个数量作为该数量的最小值。但是,这些数量是   仅指导方针,不确定合规性。

     

...

     

模板声明中的模板参数[1024]