Вы должны переопределить метод operator +, поскольку тип возвращаемого вами значения для оператора + определяется как Float32_base.Вы можете сделать это с помощью ковариации и сделать метод виртуальным.Затем переопределите метод в своем подклассе (вы, вероятно, могли бы просто вызвать метод в суперклассе).
Вы также можете сделать это с помощью шаблонов, но если вы не знакомы с шаблонами, я бы не советовал копаться вЭто.По сути, вы определяете виртуальную функцию так, как вы уже это сделали, но вместо того, чтобы возвращать Float32_base, вы возвращаете тип вашего шаблона.(до тех пор, пока ваш тип шаблона является подклассом, C ++ должен быть хорош с противоположной дисперсией).Ваш подкласс расширит базовый класс шаблоном подкласса.