如何在CRTP中调用派生模板化函数?

时间:2017-04-11 11:17:24

标签: c++ templates inheritance crtp

我的尝试是:

=

http://coliru.stacked-crooked.com/a/cb24dd811b562466

结果是

template<typename Derived>
struct Base
{
    void A()
    {
        ((Derived *)this)->B<42>();
    }
};

struct Derived : Base<Derived>
{
    template<int> void B() { }
};

1 个答案:

答案 0 :(得分:2)

您需要keyword template来调用依赖类型的模板函数:

((Derived *)this)->template B<42>();
//                 ~~~~~~~~
  

在模板定义中,template可用于声明从属名称是模板。