#include <memory>
#include <string>
+ #ifdef _MSC_VER
+ # pragma warning(disable: 4127) // conditional expression is constant
+ # pragma warning(disable: 4456) // declaration of variable hides previous local declaration
+ # pragma warning(disable: 4459) // declaration of variable hides global declaration
+ # pragma warning(disable: 4701) // potentially uninitialized local variable
+ # pragma warning(disable: 4703) // potentially uninitialized local pointer variable
+ #endif
+
template<class T1, class T2>
std::shared_ptr<T1> shared_ptr_cast(std::shared_ptr<T2> theObject)
{