CRTP的替代品

缺口

假设我们有以下课程virtual method

struct icountable{
   virtual int count() = 0;

   bool empty(){
      return count() == 0;
   }
}

struct list : public icountable {
...
}

现在假设可以用重写CRTP应该看起来或多或少像:

template <typename T> 
struct icountable{
   bool empty(){
      return static_cast<T*>(this)->count() == 0;
   }
}

struct list : public icountable<list> {
...
}

现在,假设类本身不需要使用empty()方法。然后我们可以做这样的事情:

template <typename T> 
struct icountable : public T{
   bool empty(){
      return count() == 0;
   }
}

struct list_base{
...
}

typedef icountable<list_base> list;

我的问题是第三个例子。这就是所谓的traits吗?如果使用这些优点/缺点?

p

正如评论所言,这是混合概念,您可以在此处找到有关它的信息

特点是不同的,在这里您可以找到一个基本示例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章