
C++ y Boost: error «changes meaning» o «type declaration»
23/11/2009Revisión técnica (octubre de 2026): Las trazas del artículo corresponden a versiones de Boost, GCC y herramientas de desarrollo antiguas. Antes de cambiar definiciones a ciegas, identifica el símbolo conflictivo y el primer error del compilador, además de las versiones de lenguaje y bibliotecas. Una solución aplicada a otra versión no debe considerarse universal.
Se conserva debajo el artículo original como referencia histórica.
Compilando un proyecto con las librerías Boost se pueden producir simultaneamente los siguientes errores:
Description Resource Path Location Type changes meaning of ‘special_values_parser’ from ‘class boost::date_time::special_values_parser<date_type, charT>’ MyProject line 34, external location: /usr/include/boost/date_time/special_values_parser.hpp C/C++ Problem
Description Resource Path Location Type declaration of ‘void boost::date_time::date_input_facet<date_type, CharT, InItrT>::special_values_parser(boost::date_time::special_values_parser<date_type, charT>)’ MyProject line 560, external location: /usr/include/boost/date_time/date_facet.hpp C/C++ Problem
Son debidos a un cambio de versión de GCC. Por tanto, las soluciones serían:
Solución #1)
Como workaround, añadir el parámetro «-fpermissive» en la compilación para convertir este tipo de errores en warnings.
Solución #2) RECOMENDADA
Aunque resulte evidente, lo más conveniente es arreglar el código para cumplir la normativa de GCC, según se indica en el apartado GCC Name lookup changes. En el caso de Boost, basta con actualizar las librerías Boost a la versión 1.40 o posterior (aunque puede que el bug se halla solucionado en previas versiones). En el caso de Debian/Ubuntu se pueden localizar los paquetes aquí ó en el siguiente repositorio:
deb http://ftp.de.debian.org/debian sid main
Deja una respuesta