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

Val*_*itz 5 c++ variant c++17

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

std::variant<int, float> v;
Run Code Online (Sandbox Code Playgroud)

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

Max*_*kin 6

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

C++标准说:

由于计算机是有限的,因此C++实现不可避免地受限于它们可以成功处理的程序的大小.每个实施都应记录已知的限制.该文档可以引用存在的固定限制,说明如何根据可用资源计算变量限制,或者说固定限制不存在或未知.

限制可能会限制包括下面描述的数量或其他数量的数量.建议将每个数量后面的括号内的数字作为该数量的最小值.但是,这些数量仅是指导原则,不能确定合规性.

...

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

  • @ValentinHeinitz似乎你错误地认为,`std :: variant`是内置类型. (2认同)