when / why empty constructor and when = default (which I assume is a c++11 feature)?