| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // RUN: %clang_cc1 -fsyntax-only -verify %s
- // expected-no-diagnostics
- // C++0x [basic.lookup.unqual]p14:
- // If a variable member of a namespace is defined outside of the
- // scope of its namespace then any name used in the definition of
- // the variable member (after the declarator-id) is looked up as if
- // the definition of the variable member occurred in its namespace.
- namespace N {
- struct S {};
- S i;
- extern S j;
- extern S j2;
- }
- int i = 2;
- N::S N::j = i;
- N::S N::j2(i);
- // <rdar://problem/13317030>
- namespace M {
- class X { };
- inline X operator-(int, X);
- template<typename T>
- class Y { };
- typedef Y<float> YFloat;
- namespace yfloat {
- YFloat operator-(YFloat, YFloat);
- }
- using namespace yfloat;
- }
- using namespace M;
- namespace M {
- class Other {
- void foo(YFloat a, YFloat b);
- };
- }
- void Other::foo(YFloat a, YFloat b) {
- YFloat c = a - b;
- }
- // <rdar://problem/13540899>
- namespace Other {
- void other_foo();
- }
- namespace M2 {
- using namespace Other;
- extern "C" {
- namespace MInner {
- extern "C" {
- class Bar {
- void bar();
- };
- }
- }
- }
- }
- void M2::MInner::Bar::bar() {
- other_foo();
- }
|