ultima compiler compilador c++ g++ generic-programming c++-concepts c++17

c++ - compilador - gnu g++ compiler



¿Cómo puedo construir gcc con soporte de conceptos C++("conceptos lite")? (2)

Desde el viernes, 7 de agosto de 2015 01:44:49 -0400 (05:44 +0000) el soporte de conceptos se ha fusionado en el tronco de gcc.

Usando una compilación desde después de ese punto, puede habilitar el soporte de conceptos con el -std=c++1z .

A partir de gcc 6.1 (27-04-2016), los conceptos son habilitados por -fconcepts, ya que es poco probable que estén incluidos en C ++ 17, por lo que se han eliminado de -std=c++1z . (a través de @BruceAdams en los comentarios a continuación)

El comité de estándares de C ++ está trabajando en una TS (especificación técnica) para la extensión Conceptos: "Lenguajes de programación - Extensiones C ++ para conceptos". N4377 es la última versión de este documento. Para su inclusión en el C ++ se solicitan las características estándar, idealmente para un sistema de acceso público.

Soy consciente de concept-gcc pero la propuesta de conceptos anterior (coloquialmente llamada Concepts Lite ) es diferente. Escuché que hay una rama de conceptos y probé los origin/asutton/c++-concepts de origin/asutton/c++-concepts del git mirror de gcc , pero no compilé. ¿Cómo creo y uso una versión de los conceptos de soporte de gcc como se especifica en el TS [borrador] anterior?


Según Andrew Sutton, el espejo git del trabajo de Concepts Lite está completamente desactualizado y no debe usarse. Hay una rama de conceptos en el repositorio svn para gcc implementa "concepts-lite" (hubo un esfuerzo anterior a C ++ 11 para agregar conceptos a C ++ que fue abandonado; se comenzó un nuevo esfuerzo para agregar conceptos a C ++ usando el nombre conceptos lite). Es bastante fácil de construir (suponiendo que ya tiene un gcc reciente y los paquetes de los que depende instalado), consulte las instrucciones de instalación de gcc para conocer otras opciones que desee aprobar: las siguientes instrucciones funcionaron para mí, salvo que explícitamente señalé configure en las ubicaciones donde están instalados gmp , mpc y mpfr ):

cd <suitable-directory> svn checkout svn://gcc.gnu.org/svn/gcc/branches/c++-concepts mkdir build-concepts cd build-concepts ../c++-concepts/configure --prefix=<concept-gcc-root> --disable-bootstrap --enable-languages=c,c++ make -j8 make install

Lo que no es del todo obvio es cómo usar realmente los conceptos: la opción -fconcepts sí existe, pero parece hacer incondicionalmente algo diferente que habilitar conceptos-lite. En cambio, usaría la -std=c++1z cuando compila con conceptos habilitados.