If I comment out the following two lines in dwa.cpp, it seems that the tutorial works (both for GCC 4.9 and GCC 8.3), though the results should be incorrect...
for (neighbor_bond_iterator it=neighbor_bonds(site).first; it != neighbor_bonds(site).second; ++it) this_energy_onsite += onbond_energy(*it, wl.site_state(site), wl.site_state(target(*it)))/2.;
Synge