この質問をする最も簡単な方法は、いくつかのコードを使用することです。
struct Point
{
    int x;
    int y;
    int z;
    int* as_pointer() { return &x; }        // works
    int (&as_array_ref())[3] { return &x; } // does not work   
};
as_pointerコンパイルしますが、as_array_refしません。キャストは適切なようですが、適切な構文がわかりません。何か案は?