extern int f (void); extern int r; const int *p; void g () { static const int &i = f(); // Test that i points to the same place in both calls. if (p && p != &i) ++r; // Test that if so, it points to static data. if (i != 42) ++r; p = &i; } void h () { int arr[] = { 1, 1, 1, 1, 1, 1, 1 }; g (); }