ошибка C4996: 'std::_Copy_impl': безопасно ли его отключать?

Я использую усилитель odeint для решения дифференциальных уравнений. В Visual Studio 2010 ошибок нет, но когда я использую Visual Studio 2013, я получаю эту ошибку

xutility(2132): error C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'

Я решил проблему, отключив предупреждение, используя этот #pragma warning( disable : 4996 ) пример, представленный в odeint сейчас работает. Это образец,

#pragma warning( disable : 4996 )
#include <iostream>
#include <boost/array.hpp>
#include <boost/numeric/odeint.hpp>

using namespace std;
using namespace boost::numeric::odeint;

const double sigma = 10.0;
const double R = 28.0;
const double b = 8.0 / 3.0;

typedef boost::array< double, 3 > state_type;

void lorenz(const state_type &x, state_type &dxdt, double t)
{
    dxdt[0] = sigma * (x[1] - x[0]);
    dxdt[1] = R * x[0] - x[1] - x[0] * x[2];
    dxdt[2] = -b * x[2] + x[0] * x[1];
}

void write_lorenz(const state_type &x, const double t)
{
    cout << t << '\t' << x[0] << '\t' << x[1] << '\t' << x[2] << endl;
}

int main(int argc, char **argv)
{
    state_type x = { 10.0, 1.0, 1.0 }; // initial conditions
    integrate(lorenz, x, 0.0, 25.0, 0.1, write_lorenz);
}

Мой вопрос: безопасно ли отключать это предупреждение? Спасибо


person CroCo    schedule 27.05.2015    source источник


Ответы (1)


Код должен быть безопасным. Мы отключили такое же предупреждение в модульных тестах odeint.

person headmyshoulder    schedule 27.05.2015
comment
Мы отключили одно и то же предупреждение не кажется мне убедительным аргументом в пользу того, что это безопасно. - person sehe; 27.05.2015
comment
:) Правильно, это не объясняет, почему его можно отключить. На самом деле я не помню, в чем проблема с 4996. - person headmyshoulder; 27.05.2015
comment
Связанный дубликат делает :) - person sehe; 27.05.2015