Nie ma co demonizować tego static. Oprócz tego że rzeczywiście utrudnia testy (trzeba przygotować kontrolowane setUp(...), nie popadajmy w fanatyzm "wszystko ma być immutable a funkcje pure i total".
Przy pierwszym wejściu do funkcji zmienna static od C++11 jest inicjalizowana atomowo (czyli nie zaszkodzi inicjalizacji także wielowątkowość). Oczywiście jeśli ma być bezpieczne wielowątkowo, kod dodatkowo należy przemyśleć bo dodawanie nie jest atomowe. Ale pewnie to nie ten poziom rozważań.
Zmienna statyczna inicjalizowana jest w C++ przy pierwszym wejściu do funkcji jawnie zerem. Dalsze wykonania pomijają tę inicjalizację. Zmieniłem także nazwę na IMHO sensowniejszą:
#include <iostream>
using namespace std;
void wyswietl_skumulowane( int liczba)
{
static int suma = 0;
suma += liczba;
cout << suma << endl;
}
int main()
{
wyswietl_skumulowane(1);
wyswietl_skumulowane(2);
wyswietl_skumulowane(3);
wyswietl_skumulowane(4);
wyswietl_skumulowane(5);
wyswietl_skumulowane(-15);
}