// { dg-do assemble } | |
// This testcase won't fail if class ::foo is forward-declared in the | |
// global namespace, nor if class bar is not a template class. | |
template <typename T = void> | |
class bar { | |
public: | |
friend class foo; // this is not bar::foo, it injects hidden ::foo | |
class foo {}; | |
bar() { foo(); } // but this should refer to bar::foo | |
}; | |
bar<> baz; | |
// We still have not made foo visible. | |
foo *b; // { dg-error "does not name a type" } |