В C++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
(именно так компилятор интерпретировал бы такое объявление using до С++0x)?