c++11 command tool framework