int x;
void f() {
static int s;
int x;
const int N = 5;
extern int q();
int arr[2];
auto [y, z] = arr;
struct local {
int g() { return x; } // error: odr-use of non-odr-usable variable x
int h() { return s; } // OK
int k() { return ::x; } // OK
int l() { return q(); } // OK
int m() { return N; } // OK: not an odr-use
int* n() { return &N; } // error: odr-use of non-odr-usable variable N
int p() { return y; } // error: odr-use of non-odr-usable structured binding y
};
}
local* p = 0; // error: local not in scope
— end example