p12-0x.cpp revision f6702a3927147655206ae729a84339c4fda4c651
1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 27a614d8380297fcd2bc23986241905d97222948cRichard Smith 37a614d8380297fcd2bc23986241905d97222948cRichard Smithstruct S { 47a614d8380297fcd2bc23986241905d97222948cRichard Smith int *j = &nonexistent; // expected-error {{use of undeclared identifier 'nonexistent'}} 57a614d8380297fcd2bc23986241905d97222948cRichard Smith int *m = &n; // ok 67a614d8380297fcd2bc23986241905d97222948cRichard Smith 77a614d8380297fcd2bc23986241905d97222948cRichard Smith int n = f(); // ok 87a614d8380297fcd2bc23986241905d97222948cRichard Smith int f(); 97a614d8380297fcd2bc23986241905d97222948cRichard Smith}; 107a614d8380297fcd2bc23986241905d97222948cRichard Smith 117a614d8380297fcd2bc23986241905d97222948cRichard Smithint i = sizeof(S::m); // ok 127a614d8380297fcd2bc23986241905d97222948cRichard Smithint j = sizeof(S::m + 42); // ok 13f6702a3927147655206ae729a84339c4fda4c651Richard Smith 14f6702a3927147655206ae729a84339c4fda4c651Richard Smith 15f6702a3927147655206ae729a84339c4fda4c651Richard Smithstruct T { 16f6702a3927147655206ae729a84339c4fda4c651Richard Smith int n; 17f6702a3927147655206ae729a84339c4fda4c651Richard Smith static void f() { 18f6702a3927147655206ae729a84339c4fda4c651Richard Smith int a[n]; // expected-error {{invalid use of member 'n' in static member function}} 19f6702a3927147655206ae729a84339c4fda4c651Richard Smith int b[sizeof n]; // ok 20f6702a3927147655206ae729a84339c4fda4c651Richard Smith } 21f6702a3927147655206ae729a84339c4fda4c651Richard Smith}; 22