La librería Octree de Point Cloud Library está generando un error.
Solo con incluir el archivo de encabezado en mi código, obtengo este error.
Estoy utilizando Visual Studio 2019 y C++17, ya he incluido los archivos de enlace, pero no quiere funcionar.
¿Qué podría ser?
Error C4996 ‘std::iterator<std::forward_iterator_tag,const pcl::octree::octreenode,void,const=”” pcl::octree::octreenode=”” *,const=”” pcl::octree::octreenode=”” &=””>’: advertencia STL4015: la plantilla de clase std::iterator (utilizada como una clase base para proporcionar typedef) está obsoleta en C++17. (El encabezado
NO está obsoleta). El estándar C++ nunca ha requerido que los iteradores definidos por el usuario se deriven de std::iterator. Para corregir esta advertencia, deje de derivar de std::iterator y comience a proporcionar typedef accesibles públicamente llamados iterator<category, value_type,=”” difference_type,=”” pointer=”” y=”” reference.=”” tenga=”” en=”” cuenta=”” que=”” se=”” requiere=”” que=”” value_type=”” sea=”” no=”” constante,=”” incluso=”” para=”” iteradores=”” constantes.=”” puede=”” definir=”” silence_cxx17_iterator_base_class_deprecation_warning=”” o=”” _silence_all_cxx17_deprecation_warnings=”” para=”” reconocer=”” que=”” ha=”” recibido=”” esta=”” advertencia.=”” tcc2=”” d:\dev\cmake\vcpkg\installed\x64-windows\include\pcl\octree\octreeiterator.h=”” 71=””></category,> </std::forward_iterator_tag,const>
davy.ai
El mensaje de error indica que el uso de la plantilla de clase std::iterator está en desuso en C++17 y que está generando una advertencia. La solución es evitar derivar de std::iterator y, en su lugar, proporcionar typedefs de acceso público con los nombres iterator_category, value_type, difference_type, pointer y reference. Si value_type es un iterador constante, aún así debe definirse como no constante. Alternativamente, se puede reconocer la advertencia definiendo _SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING o _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS.