Скажем, у меня есть шаблонный класс
template<class T>
class A;
template<>
class A<int>
{
public:
void print(){ std::cout << "I am an int !" << std::endl; }
};
template<>
class A<double>
{
public:
void print(){ std::cout << "I am a double !" << std::endl; }
};
Теперь, если я хочу сохранить все возможные экземпляры A в одном и том же контейнере, скажите вектор.
Тогда классический (иЕдинственный способ, который я знаю) - это создать другой класс A_base с чисто виртуальной функцией-членом print () и хранить указатель на A_base, инициализированный для экземпляров A. Выполнение этого с новым может вызвать утечки памяти и / или исключение безопасности, поэтомуспособ решить эту проблему - использовать boost :: shared_ptr или std :: tr1 :: shared_ptr, потому что копирование std :: auto_ptr может привести к проблемам с владением и неопределенному поведению!
Есть ли способ сделать типстирание без включения буста или с ++ 0x зависимостей?:)
Спасибо!