模板类内的模板元编程

时间:2015-10-27 15:07:48

标签: c++ templates template-meta-programming specialization

我正在尝试在数组中预先创建模板成员函数,并使用运行时确定的值索引到该数组。该数组是一个指向Manager中模板函数的指针数组,我将专门研究它。我想从process :: send函数中调用其中一个函数。例如。

template<typename MatchT>
class Manager
{ 
    public:

    template <int P>
    void do();

     template<int P, int ...Ps>
     struct table : table<P-1, P-1, Ps... >{};

     template<int... Ps>
     struct table <0, Ps...>
     {
          static constexpr void(*fns[])()={do<Ps>...};
     };
  };

   template <typename MatchT>
   template<int... Ps>
   constexpr void(*Manager<MatchT>::table<0,Ps...>::fns[sizeof...(Ps)])();


//process.h

 #include "Manager.H"

template<typename MatchT>
class Process
{
   public:

   void send(Manager<MatchT>& mgr  );

   private:

    typename Manager<MatchT>::template table<5> _processtable;
};

 //process.c

 template<typename MatchT>
 void Process<MatchT>::send(Manager<MatchT>& mgr)
 {
     ERROR here:
     mgr.*_processtable::fns[1]();

 }

错误是“_processtable不是类,命名空间或枚举”。

0 个答案:

没有答案