Ответ 1
В С++ 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
может преобразовывать любые аргументы, включая массивы символов. Он делает это без учета существующих конструкторов базового класса. Наследование конструкторов с использованием объявлений объявляет только конструкторы, необходимые для выполнения этой работы.