Como escrever um operador de conversão C ++ retornando referência a matriz?

Em C ++, pode-se adicionar operadores de conversão implícita em uma classe ou estrutura. Por exemplo, os tipos de vetor 3D geralmente incluem algo como:

struct Vector {
    float x, y, z;
    operator float * () { return reinterpret_cast<float *>(this); }
};

para permitir acessar os elementos do vetor com subscritos, passando para funções que querem um ponteiro, etc. Ocorreu-me perguntar: podemos, em vez disso, escrever um operador de conversão que retorna uma referência à matriz float, em vez de um ponteiro para float?

(Isso é de interesse puramente acadêmico. Eu não sei o que beneficia uma referência para matriz teria, se houver, sobre um ponteiro simples.)

Como uma função livre, podemos fazer isso como:

float (&convert(Vector & v))[3]
{
    return reinterpret_cast<float(&)[3]>(v);
}

Vector v;
convert(v);

No entanto, não consegui encontrar a sintaxe correta para fazer isso como um operador de conversão. Eu tentei coisas como:

operator float(&)[3] ()
operator float(&())[3]
float (&operator())[3]

e várias outras permutações, mas acabei de receber vários erros de sintaxe (g ++ 4.8.1).

É possível escrever um operador de conversão retornando uma referência a matriz e, em caso afirmativo, qual é a sintaxe para fazer isso?

questionAnswers(2)

yourAnswerToTheQuestion