template template parameter Frage
-
Folgender Fall:
template < template < class > class policy > class foo: public policy < some_traits < ..... > > { }; template < class traits > class simple_policy {}; // OK template < class traits, unsigned int extra_value > class extra_policy {}; // ProblemIch will in der Lage sein, das zu erreichen:
foo < simple_policy > foo1; foo < extra_policy < 5 > > foo2;Bis dato ist mir keine direkte Lösung eingefallen, nur das:
template < unsigned int extra_value > struct extra_policy { template < class traits > class type { ... }; }; foo < extra_policy < 5 > ::type > foo2;Hat jemand einen besseren Vorschlag?
-
Wie wäre es damit:
template<typename TPolicy> class foo /* : ... */ { // ... }; class simple_policy() { /* ... */ }; template<unsigned int extra_value> class extra_policy { // ... } // Dann kannst du das machen: foo<simple_policiy> foo1; foo<extra_policy<5> > foo2;Oder versteh ich was falsch?
Grüssli
-
Du hast auf die traits vergessen.
-
struct simple_policy { template<typename Traits> struct policy { ... }; }; template<int X> struct extra_policy { template<typename Traits> struct policy { ... }; }; template<typename Policy, typename Traits> struct foo { typedef typename Policy::template policy<Traits> policy; }Oder fragments.