¿Cómo compilo gcc con soporte para C++ concepts ("concepts lite")?


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

Soy consciente de concept-gcc pero la propuesta de conceptos anterior (coloquialmente referida como Concepts Lite) es diferente. He oído que allí es una rama de conceptos y he probado el origin/asutton/c++-concepts de gcc's git mirror pero que no compila. ¿Cómo compilo y uso una versión de los conceptos de soporte de gcc como se especifica en los [borradores] TS anteriores?

Author: Yakk - Adam Nevraumont, 2015-05-17

2 answers

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

Usando una compilación posterior a ese punto, puede habilitar el soporte de conceptos con la bandera -std=c++1z.

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

 27
Author: Yakk - Adam Nevraumont,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-28 16:02:52

Según Andrew Sutton, el espejo git del trabajo de Concepts Lite está completamente desactualizado y no debería usarse. Hay una rama de conceptos en el repositorio svn para gcc implementando "concepts-lite" (hubo un esfuerzo previo a C++11 para agregar conceptos a C++ que fue abandonado; un nuevo esfuerzo para agregar conceptos a C++ se inició usando el nombre concepts lite). Es bastante sencillo de construir (suponiendo que ya tiene un gcc reciente y los paquetes de los que depende instalados; vea la instrucción de instalación de gcc para otras opciones que podría querer pasar: las instrucciones a continuación funcionaron para mí, excepto que señalé explícitamente configure en las ubicaciones donde gmp, mpc , y mpfr están instalados):

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 conceptos: la opción -fconcepts existe pero parece hacer incondicionalmente algo diferente a habilitar conceptos-lite. En su lugar, usaría la opción -std=c++1z al compilar con conceptos habilitados.

 26
Author: Dietmar Kühl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-19 21:54:50