En un proyecto C++ con Makefile, Eclipse no reconocía la parte de la librería estándar correspondiente a C++11.

Abriendo el fichero /usr/include/c++/4.8.2/mutex se comprueba que el problema es el valor definido para __cplusplus que Eclipse proporciona al analizador del código.

Para hacer que Eclipse le diga a su analizador que el código es C++11 hay que hacerlo en la configuración de rutas y macros del preprocesador (Project->Properties->C/C++ General->Preprocessor Include Paths, Macros, etc.: Pestaña «Providers»). Allí hay que añadir el parámetro -std=c++11 al comando utilizado para obtener las características del compilador.

Una vez añadido, el valor de __cplusplus será 201103L, con lo que se activarán los includes de la librería estándar correspondientes a C++11.

Edición 5 de enero de 2018:

En los proyectos C++ con Makefile generado por Eclipse también es necesario indicar la versión C++ si esta no es ISO C++98. Si utilizamos código C++11 sin haber configurado el proyecto Eclipse para soportar esta versión nos dará el correspondiente error en la compilación:

Para indicarle en esta ocasión al compilador (en el otro caso se indicaba explícitamente en el Makefile) que el código es ISO C++11 se debe acceder a la configuración de las herramientas de construcción del binario (Project -> Properties -> C/C++ Build ->Settings: Pestaña «Tool Settings»). Allí, hay una entrada para seleccionar el «dialecto» que debe entender el compilador, donde habrá que seleccionar ISO C++11 (-std=c++0x) o el que corresponda.

Referencias:
C++11 standard library indexing fails, __cplusplus recognized with wrong value

Dejar una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Puedes utilizar estas etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.