Шаблонная операция над стертым шрифтом

У меня есть класс шаблона val -

      template <typename T>
class val;

Здесь оператор перегружен для любой пары типов T, T2. В основном член -

      template <typename T2>
void operator * (const val<T2>&);

Теперь у меня есть еще один класс, который использует стирание типа для хранения val-

      class val_holder;

template <typename T>
class val_holder_impl: public val_holder {
    val<T> m_val;
};

Наконец, в отдельном классе у меня есть функция шаблона, которая foo<T>который определяет val<T> xи получает в качестве аргумента val_holder* y.

Мне нужно иметь возможность вызывать оператор и m_valвнутри y.

я не могу использовать dynamic_castпотому что аргумент шаблона для точного типа y неизвестен.

Другое решение, которое я пробовал, - это иметь виртуальную функцию в val_holderосуществляется val_holder_impl<T>который вызывает *оператор. Но проходя xпотребует, чтобы аргумент виртуальной функции был шаблонным.

Любые предложения о том, как обойти этот шаблон?

0 ответов

Другие вопросы по тегам