Как написать оператор преобразования C ++, возвращающий ссылку на массив?

В C ++ можно добавить операторы неявного преобразования в класс или структуру. Например, 3D векторные типы обычно включают в себя что-то вроде:

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

разрешить доступ к векторуs элементы с индексами, передача функций, которым нужен указатель, и т. д. Мне пришло в голову удивление: можем ли мы вместо этого написать оператор преобразования, который возвращает ссылку на массив с плавающей точкой, вместо указателя на с плавающей точкой?

(Это чисто академический интерес. Я нене знаю, какие преимущества будет иметь ссылка на массив, если таковая имеется, по сравнению с простым указателем.)

В качестве бесплатной функции мы можем сделать это следующим образом:

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

Vector v;
convert(v);

Тем не менее, я неЯ не смог найти правильный синтаксис, чтобы сделать это как оператор преобразования. Я'мы пробовали такие вещи, как:

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

и различные другие перестановки, но я просто получаю различные синтаксические ошибки (g ++ 4.8.1).

Можно ли написать оператор преобразования, возвращающий ссылку на массив, и если да, то каков синтаксис для этого?

Ответы на вопрос(2)

Ваш ответ на вопрос