В C ++ 0x есть лучший способ для этого
class X: public Super {
using Super::Super;
};
Если вы объявите шаблон с идеальной пересылкой, ваш тип будет плохо работать в разрешении перегрузки.Представьте, что ваш базовый класс является конвертируемым из int
, и существуют две функции для вывода классов
class Base {
public:
Base(int n);
};
class Specific: public Base {
public:
template<typename... Args>
Specific(Args&&... args);
};
void printOut(Specific const& b);
void printOut(std::string const& s);
Вы вызываете его с помощью
printOut("hello");
Что будет вызываться?Это неоднозначно, потому что Specific
может преобразовать любой аргумент, включая символьные массивы.Это делает без учета существующих конструкторов базового класса .Наследование конструкторов с использованием объявлений только объявляет конструкторы, которые необходимы для этой работы.