
Untitled
By: a guest on
May 10th, 2012 | syntax:
None | size: 0.73 KB | hits: 14 | expires: Never
C : partial specialization of template template classes
using namespace std;
template <typename X>
class Goo {};
template <typename X>
class Hoo {};
template <class A, template <typename> class B = Goo >
struct Foo {
B<A> data;
void foo1();
void foo2();
};
template <typename A>
void Foo<A>::foo1() { cout << "foo1 for Goo" << endl;}
int main() {
Foo<int> a;
a.foo1();
}
test.cc:18: error: invalid use of incomplete type 'struct Foo<A, Goo>'
test.cc:11: error: declaration of 'struct Foo<A, Goo>'
template <>
void Foo<int, Goo>::foo1() { } // OK
template <typename A>
struct Foo<A, Goo>
{
// ...
};
template <typename A, template <typename> class B>
void Foo<A,B>::foo1() { cout << "foo1" << endl;}