http://www.oschina.net/translate/use-c-11-inheritance-control-keywords-to-prevent-inconsistencies-in-class-hierarchies