Dovrebbe funzionare, l'errore fondamentale che vedo è che non inizializzi somma a 0.
Amaro C++, il gusto pieno dell'undefined behavior.
Regole del Forum