奇异递归模板模式(CRTP)的深入探索
1. CRTP 基础与概念对比
奇异递归模板模式(CRTP)在 C++ 编程中是一种强大的技术。在 CRTP 中,派生类将自身作为模板参数传递给基类。例如下面的代码,定义了一个用于比较的基类模板 compare_base 和派生类 D :
template <typename D>
struct compare_base {
friend bool operator>=(const D& lhs, const D& rhs) {
return lhs.cmp(rhs) >= 0;
}
friend bool operator< (const D& lhs, const D& rhs) {
return lhs.cmp(rhs) < 0;
}
friend bool operator> (const D& lhs, const D& rhs) {
return lhs.cmp(rhs) > 0;
}
};
class D : public compare_base<D> {
int i_;
public:
explicit D(int i) : i_(i) {}
auto cmp(const D& rhs) const {
return (i_ < rhs.i_) ? -1 : ((i_ &g
超级会员免费看
订阅专栏 解锁全文
2401

被折叠的 条评论
为什么被折叠?



