A>Компилятор пытается применить к объекту класса Test оператор []. Но "своего" такого оператора у этого класса нету. Значит нужно попробовать привести объект класса к какому-либо другому типу так, чтобы можно стало применить оператор [].
A>Так как у класса определен оператор приведения к типу int, рассматривается конструкция
A>A>(test.operator int())["test"];
A>
A>Она является вполне легальной. Неоднозначности тоже нет — вот и применяется такая конструкция.
... В итоге выражение транслируется в "test"[1], что дает 'е'.