que tienen un simple C++ con Boost así:C++ Boost: ¿cuál es la causa de esta advertencia?
#include <boost/algorithm/string.hpp>
int main()
{
std::string latlonStr = "hello,ergr()()rg(rg)";
boost::find_format_all(latlonStr,boost::token_finder(boost::is_any_of("(,)")),boost::const_formatter(" "));
Esto funciona bien; que sustituye todas las apariciones de(), con un ""
Sin embargo, me da esta advertencia al compilar:
estoy usando MSVC 2008, Boost 1.37.0.
1>Compiling...
1>mainTest.cpp
1>c:\work\minescout-feat-000\extlib\boost\algorithm\string\detail\classification.hpp(102) : warning C4996: 'std::copy': 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'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\xutility(2576) : see declaration of 'std::copy'
1> c:\work\minescout-feat-000\extlib\boost\algorithm\string\classification.hpp(206) : see reference to function template instantiation 'boost::algorithm::detail::is_any_ofF<CharT>::is_any_ofF<boost::iterator_range<IteratorT>>(const RangeT &)' being compiled
1> with
1> [
1> CharT=char,
1> IteratorT=const char *,
1> RangeT=boost::iterator_range<const char *>
1> ]
1> c:\work\minescout-feat-000\minescouttest\maintest.cpp(257) : see reference to function template instantiation 'boost::algorithm::detail::is_any_ofF<CharT> boost::algorithm::is_any_of<const char[4]>(RangeT (&))' being compiled
1> with
1> [
1> CharT=char,
1> RangeT=const char [4]
1> ]
no me resultaba difícil desactivar la advertencia usando
-D_SCL_SECURE_NO_WARNINGS
pero soy un poco reacio a hacerlo antes de que encuentre lo que está mal, o más importante aún si mi código es incorrecto.
Esta advertencia me vuelve loco, es como la "advertencia" sobre el contenido de una taza de café caliente. – Clay
Lo peor de todo es que no hay una "solución" sana. La mayoría de las advertencias se emiten porque hay una forma mejor y menos propensa a errores para lograr lo mismo. Se pueden * arreglar *. ¿Qué se supone que debes hacer al respecto? Si tiene una matriz en C sin procesar y necesita copiar datos desde o hacia ella, los punteros son el único tipo de iteradores disponibles. std :: copy es, de lejos, la mejor opción más segura de usar. ¿O están sugiriendo que volvamos a escribir para los bucles para lograr lo mismo? – jalf
Apuesto 100 rep que se eliminará en el primer SP junto con el otro "¿No prueban lo que lanzan?" problemas ... –