15432: Вашего кода кстати тоже касается похожая проблема.
Если сделать вот так:
Z b = a + a + 10;
Такой код также не будет работать без расширений компилятора.
А вот если добавить const...
Compiled with /EHsc /nologo /W4 /c
main.cpp
main.cpp(24): warning C4239: nonstandard extension used: 'argument': conversion from 'Z' to 'Z &'
main.cpp(24): note: A non-const reference may only be bound to an lvalue
Compilation successful!
То есть всё-таки это не стандартное поведение, а расширение от MS.
Тем не менее, из этого предупреждения понятно гораздо больше, чем из вывода mingw.
Почему странное? Перегрузка с friend воспринимается логичней и проще, чем оператор - член класса.
Ваш код работает, спасибо за пример. Но вопрос был не в том, чтобы получить рабочий код :)
EDIT: У вас компилируется и работает изначальный код из текста вопроса, или оба варианта вашего кода, с const и без? А какой компилятор используете?
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.