шаблон как параметр шаблона при специализации
От: uaf  
Дата: 08.07.10 12:27
Оценка:
Всем доброго времени суток.
Сломал голову пытясь параметризировать специализировать метод 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";} // не проходит (


Если кто силен в этом — подскажите, пожалуйста.
Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.