enum { SIZE = 10 };
struct Foo { /* some fields */ };
extern Foo global_array[SIZE]; // initialized elsewhere
struct Proxy
{
Foo* pointer_;
Proxy(Foo *pointer): pointer_(pointer) { }
};
struct ProxyPOD
{
Foo* pointer_;
};
Proxy get_first_element_as_pointee()
{
return &global_array[0];
}
ProxyPOD get_first_element_as_pointee2()
{
ProxyPOD proxy = { &global_array[0] };
return proxy;
}
int main()
{
return 0;
}
// else where:
Foo global_array[SIZE];
ZW51bSB7IFNJWkUgPSAxMCB9OwoKc3RydWN0IEZvbyB7IC8qIHNvbWUgZmllbGRzICovIH07CgpleHRlcm4gRm9vIGdsb2JhbF9hcnJheVtTSVpFXTsgLy8gaW5pdGlhbGl6ZWQgZWxzZXdoZXJlCgpzdHJ1Y3QgUHJveHkKewogIEZvbyogcG9pbnRlcl87CiAgCiAgUHJveHkoRm9vICpwb2ludGVyKTogcG9pbnRlcl8ocG9pbnRlcikgeyB9Cn07CgpzdHJ1Y3QgUHJveHlQT0QKewogIEZvbyogcG9pbnRlcl87Cn07CgpQcm94eSBnZXRfZmlyc3RfZWxlbWVudF9hc19wb2ludGVlKCkKeyAKICByZXR1cm4gJmdsb2JhbF9hcnJheVswXTsKfQoKUHJveHlQT0QgZ2V0X2ZpcnN0X2VsZW1lbnRfYXNfcG9pbnRlZTIoKQp7IAogIFByb3h5UE9EIHByb3h5ID0geyAmZ2xvYmFsX2FycmF5WzBdIH07CiAgcmV0dXJuIHByb3h5Owp9CgppbnQgbWFpbigpCnsKICByZXR1cm4gMDsKfQoKLy8gZWxzZSB3aGVyZToKCkZvbyBnbG9iYWxfYXJyYXlbU0laRV07