Template template parameter partial specialization c++ -


consider code:

template<template<typename,typename> class container> class {     template<class u, class allocator>     void foo(container<u, allocator>*, u); }; 

now want specialize a in case container map value , comparator known, , create definition of foo in case (no specialization of foo). tried this:

template<typename v, typename comp> template<class u, class allocator> void a<std::map<typename, v, comp, typename>>::foo(map<u, v, comp, allocator>*, u ) {...} 

but compiling error:c3200: 'std::map<int,v,comp,int>' : invalid template argument template parameter 'container', expected class parameter.

i have looked online , found similar issues, couldn't find way specify partial template parameter list of template template. there way it?

edit: problem when giving template class partial specialization make behave template remaining parameters. here it's attempt think of map<*,known1,known2,*> template of 2 arguments (which can realy used template template parameter of a) .

edit 2: compiler have use gcc 4.1.2 has no support template aliasing, which, understood, solution.

the problem a takes template template parameter takes 2 types:

template<template<typename,typename> container> class { 

but std::map doesn't take 2 types. takes four:

template<     class key,     class t,     class compare = std::less<key>,     class allocator = std::allocator<std::pair<const key, t> > > class map; 

so that's 1 problem. have generalize template following (also note missing class keyword):

template <template <typename...> class container> class { ... }; 

but that, @ explicitly specialize member function, can't partially specialize it:

template <> template <> void a<std::map>::foo<>(std::map<u, v>*, u) { ... } 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -