pseudo-code
Code:
template<typename T1, typename T2>
class TestClass {
....
__ function();
}
template<typename T2> // partial specialisation for first template argument, #error!
__ class<char, T2> :: function()
What if I've designed my template class, later I decide to add a function 'function' with only its first argument specialised? As far as I know, after a partial specialisation everything has to be specialised.
Henceforth, this will work:
Code:
template<typename T1> // partial specialisation for second template argument, OK
__ class<T1, char> :: function()
EDIT: This is especially horrible with traits... along the road you discover over and over again the "correct" order of the arguments