Random experiments with abstractions in C++