Although I try to avoid anything other than the most primitive c++ templates, I occasionally have to use the following construct:
template <typename float_type, template <typename float_type> class c2_class > class c2_typed_ptr : public c2_const_ptr<float_type>
which causes swig to report a syntax error. Because I am not a particular template wizard, it took a while before I verified that this was legal c++ (by reading the BNF description for c++ in detail), and just a swig issue.
It appears that any use of a template inside a template declaration does not work.
This is with swig 1.3.33 and before.