Если у меня есть такая спецификация класса шаблона,
template <typename T>
class MyClass {
public:
void fun1();
// ...
void funN();
};
template <typename T>
void MyClass<T>::fun1() {
// definition
}
// ...
template <typename T>
void MyClass<T>::funN() {
// definition
}
Если я изменю шаблон класса на что-то другое, скажем, я добавлю дополнительный параметр:
template <typename T, typename U>
class MyClass {
// ...
};
Затем я должен изменить каждое определение функции (fun1, ..., funN), чтобы оно соответствовало спецификации шаблона класса:
template <typename T, typename U>
void MyClass<T,U>::fun1() { //... }
Существуют ли стратегии, позволяющие избежать этого? Могу ли я использовать макросы, например
#define DFLT_TEMPLATE template<typename T, typename U>
#define DFLT_CLASS class<T,U>
DFLT_TEMPLATE
void DFLT_CLASS::fun1() { // ... }
Или это считается плохой практикой?