c++11 - Typedef of a templated alias in C++ -
i have following template class a:
template<template<typename>class vectort> class { //... } which instantiate this: a<mystdvector> objecta; mystdvector alias std::vector specific allocator (myallocator):
template<typename t> using mystdvector = std::vector<t,myallocator> i decided create alias named vector inside a:
template<template<typename>class vectort> class { public: template<typename t> using vector = vectort<t>; //... } such inside a can call vector<int> (instead of vectort<int>). more important, access alias vector class b. how achieve this :
template<class a> class b { public: // how define type vector refers a::vector // such inside b, vector<int> refers a::vector<int> // refers mystdvector<int> } in order create attribute vector<int> in class b instance. have tried 3 things (inside class b):
typedef typename a::vector vector; //1 template<typename t> using vector = typename a::vector; //2 template<typename t> using vector = typename a::vector<t> //3 but compiler says typename a::vector names stdvector not type (i guess considered alias , not type?) 2 first solutions. , last solution produces syntax error.
here whole code tried compile :
#include <vector> template<typename t> using mystdvector = std::vector<t/*,myallocator*/>; template<template<typename>class vectort> class { public: template<typename t> using vector = vectort<t>; //... }; template<class a> class b { public: // typedef typename a::vector vector; // 1 // template<typename t> // using vector = typename a::vector; // 2 // template<typename t> // using vector = typename a::vector<t>; // 3 vector<int> m_vector; }; int main(int argc, char *argv[]) { a<mystdvector> a; b<a<mystdvector>> b; return 0; } i confused difference between typedef , alias, when want mix them , templated...
type 3 adding template
template <typename t> using vector = typename a::template vector<t>;
Comments
Post a Comment