Похоже на ошибку компилятора в G CC 7.3 и старше. Обходной путь, кажется, строит, используя флаг -std=c++17
. В качестве альтернативы, оператор преобразования float
explicit
также исправляет это:
explicit operator float() const { return magnitude_; }
(Кстати, всегда полезно пометить эти const
.)
Обновление :
На самом деле, просто заставляя эти операторы const
, похоже, исправить это уже без необходимости делать float
один explicit
или строить с -std=c++17
.