I prefer the solution without template (if possible) because I think template complicate a lot of things (exceptions, no real typing, implementation code is spread between .inl and .cpp). I basically have to think less if there is no template abstraction.