Ничто не мешает вам неправильно вводить параметры в «защищенной» версии. Кажется, Microsoft считает, что вы всегда будете использовать что-то вроде:
errno_t e = memcpy_s (&dstbuff, sizeof(dstbuff), &srcbuff, sizeof(srcbuff));
и проверьте ошибку.
Но это помогает только людям, которые не знают, что они делают с языком. По моему мнению, эта группа людей либо не должна использовать язык, либо должна учиться тому, как он работает.
Этот тип костыля не дает им никаких преимуществ в долгосрочной перспективе, поскольку их код не будет переносимым.
Теперь, возможно, Microsoft провела некоторый анализ и обнаружила, что было много проблем, вызванных неправильным использованием людьми memcpy()
, и они думали, что это исправит это. Но, если бы это было так, я подозреваю, что лучшим решением было бы обучить разработчиков, а не заставлять их использовать нестандартные функции, которые будут недоступны в стандартных компиляторах.