// { dg-do compile } // Origin: C++ Standard Draft (7.3.3/12) // PR c++/2294: using declarations should not conflict, but only cause // an ambiguous overload set to be created. namespace B { void f(int); // { dg-error "note" } void f(double); // { dg-error "note" } } namespace C { void f(int); // { dg-error "note" } void f(double); // { dg-error "note" } void f(char); // { dg-error "note" } } void h() { using B::f; using C::f; f('h'); f(1); // { dg-error "ambiguous" } void f(int); // { dg-error "previous using declaration" } } void m() { void f(int); using B::f; // { dg-error "already declared" } }