Вы должны иметь
return {-a.real(), -a.imag()};
потому что вы хотите вернуть complex
, созданный из этих двух значений. Если вы пытались использовать
return -a.real(), -a.imag();
вместо этого вы бы вернули complex
, который был создан из -a.imag()
, так как оператор запятой возвращает только последнее значение. По сути, код точно такой же, как
return -a.imag();
Чтобы сделать это более явным, автор мог бы написать
return complex{-a.real(), -a.imag()};
//or
return complex(-a.real(), -a.imag());
но это действительно не нужно, поскольку возвращаемое значение всегда преобразуется в тип возвращаемого значения, а со списками инициализаторов они используются так же, как вы ввели return_type{ initializers }
.