Hi!

I was trying to find the solution to this problem, but I don't think I

could quite come up with the correct keywords to find it, since I'm

pretty sure it's been asked before. In short, here's the situation

(ignore missing namespaces, etc, since I'm not cut-pasting this..)

// a.h

template <class B>

class A

{

...

public:

template <typename Argument>

inline A & operator<<(Argument arg);

...

};

#include "a.inl"

// a.inl

template <class B>

template <typename Argument>

inline A<B> & A<B>::operator<<(Argument arg)

{

...

}

template <class B>

template <>

inline A<B> & A<B>::operator<<(Control ctl)

{

...

}

// End

Now, the problem is that my compiler (G++32) is giving me an error

'enclosing class templates are not explicitly specialized.' Now, the

question is, obviously, is there something wrong with my syntax (does

the specialization need to come first, etc), or should I get another

compiler? I've tried a couple of tricks and there're obvious

workarounds but I'd rather do it this way and in any case I'd feel

better knowing the correct syntax if such exists. Help appreciated.

E