И VC10, и gcc запускают код нормально с разными экземплярами после объявления об использовании.
Похоже, что объявление об использовании принесло весь шаблон в область видимости.
Также в стандарте c ++ 0x n3290 7.3.3 - 5
A using-declaration shall not name a template-id. [ Example:
struct A {
template <class T> void f(T);
template <class T> struct X { };
};
struct B : A {
using A::f<double>; // ill-formed
using A::X<int>; // ill-formed
};
, что, по-видимому, предполагает, что использование не должно использоваться с определенным идентификатором шаблона.