C++模板:显式特化与完全特化是否为同一概念?
C++模板特化术语:完全特化与显式特化的关系
这两个术语并非同一概念,显式特化是更宽泛的范畴,完全特化是它的一个子集:
- 显式特化(explicit specialization):指为模板的部分或全部参数提供定制化实现的写法,包含两种细分类型:
- 完全特化:就是微软文档里定义的"complete specializations"——即所有模板参数都被指定了具体类型/值的特化。比如针对通用模板
template<typename T> class MyClass,写template<> class MyClass<int>,这就是完全特化。 - 部分特化(partial specialization):仅特化部分模板参数,剩下的参数仍保留模板参数的形式。比如针对
template<typename T, typename U> class Pair,写template<typename T> class Pair<T, std::string>,这属于显式特化,但不是完全特化。
- 完全特化:就是微软文档里定义的"complete specializations"——即所有模板参数都被指定了具体类型/值的特化。比如针对通用模板
简单来说:所有的完全特化都是显式特化,但显式特化还包含部分特化的情况。
内容的提问来源于stack exchange,提问作者AJL
相关产品推荐
相关产品推荐

