Если мой базовый класс имеет функцию func (int)
, а мой производный класс имеет функцию func (double)
, производная func (double)
скрывает base :: func (int)
. Я могу использовать , используя
, чтобы внести базовую версию в список перегрузок производной версии:
struct base
{
void func(int);
};
struct derived : base
{
using base::func;
void func(double);
}
Хорошо, отлично. Но что, если я не уверен, есть ли у base
func ()
или нет? т.е. поскольку я занимаюсь метапрограммированием шаблонов, я не совсем уверен, что такое base
, но я хочу поднять его функции на тот же уровень - если они существуют. т.е. измените приведенный выше пример на:
struct base_with
{
void func(int);
};
struct base_without
{
};
template <typename Base>
struct derived : Base
{
using Base::func; // if Base has a func(), I want to bring it in
void func(double);
}
derived<base_with> testwith; // compiles
derived<base_without> testwithout; // fails :-(
Мне нужно using_if
как boost :: enable_if
. Кажется невозможным ...
Заранее спасибо.