允许用户向std
命名空间添加显式特化。但是,我明确禁止某些模板专门化。
我可以和不能专门研究哪些模板?
最佳答案
宽松地引用标准:
numeric_limits
不得专门用于非算术标准类型(例如complex<T>
)shared_ptr
的特殊化应为CopyConstructible,CopyAssignable和LessThanComparable [并且]可转换为bool
。”weak_ptr
的特化应该是CopyConstructible和CopyAssignable。”std::hash
]的[T]模板专业应满足类模板哈希的要求。”<type_traits>
中的任何内容:“除非另有说明,否则未定义为该子节中定义的任何类模板添加专门化的程序的行为。” (仅明确允许common_type
的某些特殊化)istreambuf_iterator
的所有特化都应具有平凡的副本构造函数,constexpr默认构造函数和平凡的析构函数。complex
的效果。”我认为这意味着定义其他专业是没有意义的。atomic
模板的规范化和实例化应具有删除的副本构造函数,删除的副本分配运算符和constexpr值构造函数。”unary_function
和binary_function
。程序不得声明这些模板的特殊化。”当然,总体条款17.6.4.2.1的第1句(感谢@sehe和@curiousguy):
和句子2:
关于c++ - 我可以和不能专门研究std namespace 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8513417/