Для ответа на этот вопрос у нас есть:
/ clr: safe Создает проверяемую сборку только для MSIL. Вы не можете иметь нативные типы в вашем
код, и если вы попытаетесь использовать их, компилятор выдаст ошибку. Этот сборник
Режим производит сборки, которые эквивалентны тому, что C # (обычный режим)
и VB.NET будет производить.
Для работы с типобезопасным кодом вам нужно использовать указатели (используя gcnew) вместо указателей (используя new)
Кроме того, оператор safe_cast является новым для C ++ / CLI и заменяет __try_cast в
старый синтаксис. safe_cast гарантированно создает проверяемый MSIL. Вы
можете использовать safe_cast везде, где вы обычно используете dynamic_cast,
reinterpret_cast или static_cast. Во время выполнения safe_cast проверяет
посмотреть, действителен ли акт
Вы должны взять копию: C ++ / CLI в действии Нишанта Сивакумара
Очень хорошая ссылка на C ++ / CLI