У меня есть базовый класс, который определяет ограниченный шаблонный оператор преобразования
struct base {
template <typename C, std::enable_if_t<some_constraints<C>, int> = 0>
operator C() const;
};
У меня также есть производный класс, который реализует другой оператор преобразования с другими ограничениями:
struct derived : base {
template <typename P, std::enable_if_t<different_constraints<P>, int> = 0>
operator P() const;
};
К сожалению,объявление в производном классе скрывает оператор в базовом классе.Я хотел бы перенести базовый оператор в производную область, но «очевидный» синтаксис
template <typename C>
using base::operator C;
не работает (кажется, что компилятор пытается проанализировать его как объявление шаблона псевдонима).
Кто-нибудь знает правильный синтаксис для достижения этой цели?