Информация об изменениях

Сообщение Простая задачка обощённого программирования от 17.10.2019 14:52

Изменено 17.10.2019 14:54 Kernan

Простая задачка обощённого программирования
Дело такое,
Если простая реализация класса any которая хранит своё представление через pimpl и type erasure. Мне неоходимо перегрузить оператор вывода << для any чтобы в своём формате выводить impl::T. всего типов 3, один из них std::string.
Как это сделать без РТТИ?

Концептуально это так выглядит
struct any
{
   ...
   struct placeholder
   {
       virtual ~placeholder() {}
   }

   template<class T>
   struct impl: public placeholder
   {
       T value;
   }
}

operator<<(any& a)
{
   os << a.imp.value;
}
Простая задачка обощённого программирования
Дело такое,
Если простая реализация класса any которая хранит своё представление через pimpl и type erasure. Мне неоходимо перегрузить оператор вывода << для any чтобы в своём формате выводить impl::T. всего типов 3, один из них std::string.
Как это сделать без РТТИ и красиво чтобы перегуржать только один оператор << под тип?

Концептуально это так выглядит
struct any
{
   ...
   struct placeholder
   {
       virtual ~placeholder() {}
   }

   template<class T>
   struct impl: public placeholder
   {
       T value;
   }
}

operator<<(any& a)
{
   os << a.imp.value;
}