侯捷C++学习笔记:偏特化

什么是偏特化

  • 泛化(泛型)的反义
  • 分为个数的偏特化和范围的偏特化

数量偏特化

  • 举个例子,如果有如下class的定义,第一个class的就是泛型的,而第二个class,也是两个参数,但是第一个参数是个确定类型的,第二个是泛型的。这样就叫个人的偏特化。这固定类型的位置必须是从左至右的,不能跳着写。
1
2
3
4
5
6
template<typename T, typename U>
class vector {}


template<typename U>
class vector<bool, U> {}

范围偏特化

  • 说白了进一步约束泛型的类型。这个和C#中泛型的where约束有点像。
  • 对于下面的例子来说,第一个C约束几乎没有,但是第二个就约束为指针类型了。
1
2
3
4
5
6
template<typename T>
class C {}


template<typename U>
class C<U*> {}
# CPP
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×