При компиляции кода на Уровень предупреждения 4 (/ W4) , я получаю C4996 предупреждений на std::copy()
вызовах, параметры которых являются массивами C (не STL)контейнеры, как векторы).Рекомендуемое решение для решения этой проблемы, по-видимому, заключается в использовании stdext :: checked_array_iterator .
Для чего используется stdext :: checked_array_iterator ?Как это работает?
Почему он не выдает предупреждение о компиляции этого фрагмента ошибочного кода, скомпилированного в Visual C ++ 2010?:
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
int arr0[5] = {100, 99, 98, 97, 96};
int arr1[3];
copy( arr0, arr0 + 5, stdext::checked_array_iterator<int*>( arr1, 3 ) );
return 0;
}