jeudi 28 avril 2016

C++ typedef and templates syntax?

I was reading this tutorial on variadic templates, but in below code:

 template<int index, class C>
struct container_index {

  // points to the "next" container type 
  typedef typename container_index<
    index-1,
    typename C::base_container
  >::container_type container_type;

  // points to the next T-type 
  typedef typename container_index<
    index-1,
    typename C::base_container
  >::type type;
};

these typedefs seems redundant but it compiles well. The problem is simply I dont understand why they are like this and I didnt find a tutorial explaining this case. Could someone give some explanation? Why the typedef name is repeated:

"::container_type container_type;"

 "::type type;"

It couldn't be just like that:

typedef typename container_index<
        index-1,
        typename C::base_container
      >  type;

Many thanks.

Aucun commentaire:

Enregistrer un commentaire