C++泛型编程:模板偏特化

模板偏特化为模板提供特殊的实现,针对特定的模板参数或参数组合。

在模板全特化,所有的模板参数都被指定了具体的类型。

我们可以在泛化设计中提供一个特化版本,针对其中某个或者数个模板参数进行特化,我们可以指定一部分模板参数的具体类型,或对模板参数施加一些约束条件。

模板偏特化能够让模板根据不同类型做出不同行为决策的通用代码。

假设有一个类模板,有两个模板参数。

template 
class MyTemplate {
    // 通用实现
};

假设当第二个模板参数是int类型时,我们希望有一个特殊的实现。这时,可以使用模板偏特化来实现 

template 
class MyTemplate {
    // 针对第二个模板参数为int类型的特殊实现
};
  • 模板偏特化只能用于类模板,不能用于函数模板。函数模板的重载和特化遵循不同的规则。
  • 当存在多个匹配的偏特化时,编译器会根据最具体的匹配规则选择一个实现。

你可能感兴趣的:(c++,c++,开发语言)