std 命名空间内的专业化有哪些限制和允许?
std 命名空间中的专业化:限制和允许
尽管能够向 std 命名空间添加显式专业化,但某些模板有明确的禁止。了解这些限制对于确保使用 std 命名空间专业化的代码的有效性至关重要。
禁止专业化的模板
-
numeric_limits: 不允许非算术标准类型(例如,complex
)。 - shared_ptr: 必须可复制构造、可复制分配、LessThanComparable,并且可转换为 bool。
- weak_ptr: 必须可复制构造且可复制分配。
- std::hash: 特化必须满足类模板哈希的要求。
-
type_traits :
中任何类模板的显式特化除非指定,否则未定义。 - 语言环境: 需要专门化。
- istreambuf_iterator: 需要一个简单的复制构造函数、constexpr 默认构造函数和简单的析构函数.
- complex: 仅允许 float、double 和 long double 特化。
- atomic: 特化必须具有已删除的复制构造函数、复制赋值运算符和 constexpr 值构造函数。
- 一元函数和二元函数: 已弃用且不应专门化。
其他限制
- 根据第 17.6.4.2.1 条,向命名空间 std 或其子命名空间添加声明或定义时,行为未定义。例外仅适用于依赖于用户定义类型并满足标准要求的模板特化。
- 禁止显式特化标准库类模板、成员函数模板或成员类模板的任何成员函数。
允许特化的模板
未明确禁止的模板如果依赖于用户定义的类型并满足原始模板的标准要求,则可以特化。
以上是std 命名空间内的专业化有哪些限制和允许?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)