I wouldn't expect your safe_cast to work in any version of C++/CLI or the .NET framework. This cast is meant to be used for downcasting in a descendant/ancestor relationship, i.e. casting an A ^ to a...