Всем доброго времени суток.
Сломал голову пытясь параметризировать специализировать метод Rec::set (приведен упрощенный пример):
#include <iostream>
class Rec
{
public:
Rec() {};
template <class T> void set(const T& rVal) {std::cout << "default";}
};
template <class Obj>
class Ett {};
// таких классов будет много
class Obj1 {};
class Obj2 {};
template <>
void Rec::set(const Ett<Obj1>& rVal) {std::cout << "Obj1";}
template <>
void Rec::set(const Ett<Obj2>& rVal) {std::cout << "Obj2";}
int main(int argc, char* argv[])
{
Rec rec;
Ett<Obj1> eo1;
Ett<Obj2> eo2;
rec.set(eo1);
rec.set(eo2);
return 0;
}
Хочется одним махом специализировать set для всех шаблонных класов Ett, что-то вроде:
template <template <class> class E>
void Rec::set(const Ett<E>& rVal) {std::cout << "Obj";} // не проходит (
Если кто силен в этом — подскажите, пожалуйста.
Спасибо.