Я на 99% уверен, что ответом на этот вопрос будет «нет игральных костей», но я все равно попробую ...
Я пытаюсь переопределить operator[]
.
Я знаю, как переопределить его для вызовов данного типа:
struct Huh {
int x;
int operator[](float idx) { return -1; }
};
Huh h;
cout << h[123.4f] << end; // works, spits out -1
Но что если я захочу изменить способ подстановки массива следующих типов:
Huh h[10];
Huh h2 = h[123.4f]; // invalid!!
Появляетсяэто неизменяемое поведение C ++.Таким образом, operator[]
для типа "Huh [10]" (или любого типа массива) является недопустимым.
Или, есть ли какой-нибудь способ определить operator[]
для типа с массивом?
Я попытался сделать operator[]
бесплатной функцией только для того, чтобы обнаружить, что это запрещено в C ++.Есть другие идеи?