Используйте передачу по ссылке:
for (auto& neuron : neurons)
Иначе при обходе цикла вы скопируете весь массив. А то, что конструктор вызывается только вначале, — очень странно, скорее всего, это ещё один баг. Можно увидеть всё объявление класса neuron (без реализации функций)?