The following code:
template <typename S, typename T>struct foo { void bar();};template <typename T>void foo <int, T>::bar() {}
gives me the error
invalid use of incomplete type 'struct foo<int, T>'declaration of 'struct foo<int, T>'
(I'm using gcc.) Is my syntax for partial specialization wrong? Note that if I remove the second argument:
template <typename S>struct foo { void bar();};template <>void foo <int>::bar() {}
then it compiles correctly.