for - lenguaje de c++
¿C++ 14 soportará funciones genéricas sin restricciones? (1)
Mientras observaba los cambios de versión de GCC 4.9.0 here , me sorprendió gratamente leer lo siguiente; en la sección "Nuevas mejoras específicas de idiomas e idiomas" para C ++:
G ++ admite funciones genéricas sin restricciones como se especifica en §4.1.2 y §5.1.1 de N3889: Especificación de Concepts Lite . Brevemente, auto puede usarse como un especificador de tipo en una declaración de parámetros de cualquier declarador de función para introducir un parámetro de plantilla de función implícita, similar a las lambdas genéricas.
// the following two function declarations are equivalent
auto incr(auto x) { return x++; }
template <typename T>
auto incr(T x) { return x++; }
Construí GCC 4.9.0 y mis pruebas iniciales funcionaron como se esperaba. Creo que Concepts Lite seguirá siendo de alguna manera auxiliar a la próxima especificación de C ++ 14. ¿Hay algún plan para que las "funciones genéricas sin restricciones" se conviertan en parte de C ++?
Si observamos el último borrador del estándar N3936 que está bastante cerca del C ++ 14 DIS que es N3937
( esto se trata en N3938 ). No contiene ninguno de los idiomas especificados en las secciones 4.1.2
y 5.1.1
de N3889
.
Así que para C ++ 14 parece que la respuesta es no, pero Bjarne Stroustrup dice que los conceptos lite serán un informe técnico . Puede encontrar más información sobre los informes técnicos en la página Estado actual de ISO cpp que dice:
Más allá de C ++ 14, el comité contempla la producción de otro estándar de C ++ en aproximadamente 2017. Sin embargo, eso no significa que no suceda nada mientras tanto, porque actualmente tenemos ocho (8) Especificaciones técnicas separadas en curso, varias de las cuales están en camino se publicará en 2014 y 2015. A partir de 2012, el comité ha pasado a un modelo de "desacoplamiento" en el que los principales trabajos pueden progresar independientemente de la Norma en sí y entregarse como TS independientes. Los proveedores pueden elegir implementarlos y la comunidad puede adquirir experiencia con la versión experimental :: std de cada característica. Esto nos permite aprender y ajustar el diseño de cada función según la experiencia antes de que se incluya formalmente en una versión futura del estándar C ++ real.