Работает ли наследование конструкторов с шаблонами в C++0x?

В 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)?

23
задан Peter Alexander 12 September 2011 в 22:02
поделиться