Private Constructor and make_shared: 
Solution: Using Pass-Key-Idiom Pattern 
URL: http://anthony-arnold.com/2012/04/05/three-fun-cpp-techniques/