Я сказал, что плохо понял, что ты имел ввиду.
Так внемли. Дальше следует цепочка утверждений. Вряд ли спорных.
Плюсы имеют тридцатилетнее легаси в синтаксисе и прочих аспектах. Это и преимущество (обратная совместимость) и недостаток (множество небезопасных практик и конструкций приходится поддерживать/нельзя выпиливать, меньшая свобода при внесении новых изменений/фич).
То же самое относится и к совместимости с C. Тоже огромный плюс и огромный минус.
C++ core guidelines — это некоторые правила. Изначально не для человека, а для компилятора. Если ты герой — прочти их все и запомни. И следуй им. Если нет — то полагайся на компилятор. Он даст тебе ворнинги/подсказки. Везде есть аналог -Werror
/-Werror-*
.
Нужны они для того, чтобы при сохранении обратной совместимости и всего багажа, который приводит к небезопасным конструкциям, в Стандарте надёжно определить то, что является таковыми (небезопасными конструкциями) и не использовать их.
Можно использовать подмножество языка так, что написанное будет безопасным. И следить за тем, что ты не вышел из этого подмножества будет компилятор (т.е. это надёжно). Некоторых вещей не хватает и их добавляют через GSL (Guidelines Support Library, там всякие обёртки для указателей и прочие, обычно zero-cost, утилиты, которые или убирают небезопасные практики, или являются подсказками компилятору).
Получается безопасность (как минимум) Rust (с твоих слов, сам не разбирался) и мощность C++ в части поддержки всего старого кода и прочих общеизвестных плюсов C++.