C++中嵌套模板声明的限制
Limit of nested template declarations in C++
C++标准施加了许多限制,例如函数参数的最大数量,标识符的最大长度或嵌套作用域的最大数量。
我好奇的是最大嵌套模板声明的限制(或缺乏限制(,例如:
template <template <template < template <template < ...
我从某人那里听说它只是两个(template <template <typename T> class>
(,但事实并非如此(至少不是最新版本的 MSVC 编译器(。
我很感兴趣,这是否真的有限制,如果有,它的价值是什么,以及它在C++标准的不同版本之间是如何变化的。
标准没有强加的价值。 这是一个实现定义的值,将由编译器记录。 我能在标准中找到的唯一直接限制,因为在 [temp.arg.template] 中没有任何内容,在 [implimits] 中找到
它是 模板
- 声明中的模板参数 ([temp.param]( [1 024]。
其中 1024 是建议的最小参数数。 不过,这只是一个建议,第1段和第2段:
附件B(资料性( 实施数量 [限制]
由于计算机是有限的,因此C++实现不可避免地会受到它们能够成功处理的程序大小的限制。每个实现都应记录已知的这些限制。本文档可能会引用存在固定限制的地方,例如如何计算可变限制作为可用资源的函数,或者说明固定限制不存在或未知。
这些限制可能会限制包括下述数量或其他数量。建议将每个数量后面的括号数字作为该数量的最小值。但是,这些数量只是指导原则,并不能确定合规性。
强调我的
说清楚。
相关文章:
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 如何在嵌套类中正确使用友元声明?
- 具有嵌套类声明的类模板 (C++)
- 如何在该接收类之外声明嵌套类的方法
- MSVC 2017 - 错误 - 如何将模板类 X 的模板成员函数声明为嵌套类 X::Y 的好友
- 以嵌套类为参数的友元模板声明
- 我们可以在main函数中声明嵌套类对象吗
- C++中嵌套模板声明的限制
- 类外的前向声明有效,但在嵌套时无效
- 声明嵌套在模板参数中的类型的变量?
- 这个嵌套结构声明是什么意思?
- 声明嵌套基模板类实例是派生类的好友
- C++17 是否允许向前声明嵌套类
- 有没有办法在C++中预先声明嵌套类
- 声明嵌套结构的指针
- 如何正确声明嵌套类
- 如何在层次结构头文件中声明嵌套类型
- 带嵌套类的链表:如何在声明嵌套类类型之前使用它
- 无法在 main 中声明嵌套类的即时。"对 Class::NestedClass::NestedClass() 的未定义引用;
- 前向声明嵌套在模板类中的模板类