Long template parameter lists with generic class method definitions
c++, templates
Solution
If you define the member inside the `class {}` scope, you don't need to repeat the class template parameters.
Perhaps you can eliminate some parameters using the traits idiom, or otherwise compute several parameters from one.
Instead of
template< typename size_type, typename volume_type, typename width_type >
you could have
template< typename param_type >
...
typedef typename measurement_traits< param_type >::size_type size_type;
etc.
C++11 does introduce using declarations which are effectively "templated typedefs", but they cannot be used in the nested-name-specifier of a function definition, which is what you are trying to simplify.
Problem
If I have a template class, for which I define a member function later in the file, is there a way to avoid repeating the long parameter list? For example ``` template<class tempParam1, class tempParam2, class tempParam3> class Foo { ... int Bar(int funcParam1, int funcParam2, int funcParam3); } template<class tempParam1, class tempParam2, class tempParam3> int Foo<tempParam1, tempParam2, tempParam3>::Bar(int funcParam1, int funcParam2, int funcParam3) { ... } ``` Is there some way to keep that function definition line from being so long? Having a bunch of methods to define like that is making my code hard to read. I tried a typedef like ``` template<class tempParam1, class tempParam2, class tempParam3> typedef Foo<tempParam1, tempParam2, tempParam3> FooClass; int FooClass::Bar(int funcParam1, int funcParam2, int funcParam3) { ... } ``` But the compiler (g++) complained ("error: template declaration of ‘typedef’"). Thanks!