В С++ 0x вы можете использовать ключевое слово using
для наследования конструкторов, например:
class B { B(int) {} };
class A : public B { using B::B; };
который неявно объявит конструктор A(int)
. Это работает с шаблонами?
class B { B(int) {} };
template<class T> class A : public T { using T::T; };
Внутри T::T
я ожидаю, что компилятор вычислит левую руку T
, так как использование оператора области действия в аргументах шаблона является нормальным, но выяснение того, что правая сторона T
является конструктором, является частным случаем. На самом деле возникает двусмысленность: что делать, если у меня есть метод под названием T
в B
, который я пытаюсь добавить в A
перегрузки (что как компилятор интерпретирует такое использование объявления pre-C + + 0x)?