Oh, right - you're using the templates in more than one file.  You're in borderline compiler-dependent territory here - sharing templates across compilation units is not in C++98.  Have you tested with MSVC?