// PR c++/30195 // { dg-do run } template struct A { int f(int) { return 0; } int f(double) { return 1; } int f(char) { return 2; } }; template struct B : A { using A::f; int f(int) { return 3; } }; int main() { B b; if( b.f( 42 ) != 3 ) __builtin_abort(); if( b.f( 3.14 ) != 1 ) __builtin_abort(); if( b.f( 'a' ) != 2 ) __builtin_abort(); if( b.A::f( 42 ) != 0 ) __builtin_abort(); }