Таким образом, все говорят, что вы должны сделать его неизменным, и если нет особых причин, чтобы сделать его изменчивым (вы добавите миллиард многочленов к одному магическому и не хотите выделять память), неизменность это путь.
Если у вас есть подлинные причины производительности, вы можете захотеть иметь деструктивную и неразрушающую версию, но помните - это приводит к путанице. Я думаю, что ваша идея перегрузки добавить, чтобы быть разрушительной или не основанной на хитрости, сделает вещи очень, очень запутанными. Лучше сделайте все неразрушающим и сделайте метод addDestructive (poly p), если вы выберете.