this is a practice solution for effective_cpp_3rd_edition, using cc11