首页  >  文章  >  后端开发  >  标准容器模板可以用不完整的类型实例化吗?

标准容器模板可以用不完整的类型实例化吗?

Barbara Streisand
Barbara Streisand原创
2024-11-04 14:59:40940浏览

Can Standard Container Templates be Instantiated with Incomplete Types?

标准容器模板和不完整类型

问题是标准容器模板是否可以用不完整类型实例化。虽然某些容器结构在实践中似乎可行,但 C 11 标准在 §17.6.4.8 [lib.res.on.functions] 下明确禁止这种情况。

该标准指出,“……如果不完整的类型(3.9) 在实例化模板组件时用作模板参数,除非该组件特别允许。”此限制适用于成员函数、成员类定义和签名,但不适用于块作用域内的操作。

标准库实现无法引发因不完整类型而失败的模板实例化,即使其他特别需要的实例化成功。此禁令旨在防止潜在问题,例如由“小向量”等优化引起的自引用类型。

存在异常,例如 std::unique_ptr 类模板,它明确支持不完整的类型参数,即使在块范围内。然而,对于标准容器,使用不完整类型的限制仍然存在,确保跨实现的行为一致。

以上是标准容器模板可以用不完整的类型实例化吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn