C++17 ahora es característica completa, por lo que es poco probable que experimenten grandes cambios. Cientos de propuestas que fueron presentadas para C++17.

Que de esas características se han añadido a la de C++ en C++17?

Cuando se utiliza un compilador de C++ soporta «C++1z», que de esas características van a estar disponibles cuando el compilador actualizaciones a C++17?

Lista completa de características como por Ruido: biblioteca, lengua.
este blog bost tiene un buen resumen: bfilipek.com/2017/01/cpp17features.html
Ver el oficial de la Cambia entre C++14 y C++17 DIS (P0636r0) documento para obtener una lista de los cambios principales desde C++14 a C++17.

OriginalEl autor Yakk – Adam Nevraumont | 2016-06-27

1 Comentario

  1. 1131

    Características del lenguaje:

    Plantillas y Código Genérico

    Lambda

    Atributos

    Sintaxis de limpieza

    Limpiador multi-devolución de control de flujo y

    • Estructurado enlaces

      • Básicamente, de primera clase std::tie con auto
      • Ejemplo:
        • const auto [it, inserted] = map.insert( {"foo", bar} );
        • Crea variables it y inserted con deduce el tipo de la pair que map::insert devuelve.
      • Trabaja con tupla/par-le gusta & std::arrays y relativamente plana estructuras
      • En realidad el nombre de estructurado enlaces en la norma
    • if (inicialización; condición) y switch (inicialización; condición)

      • if (const auto [it, inserted] = map.insert( {"foo", bar} ); inserted)
      • Se extiende la if(decl) a los casos en que decl no convertibles a tipo bool sensatez.
    • La generalización de gama basada en bucles for

      • Parece ser en su mayoría de apoyo para los centinelas, o al final de los iteradores que no son del mismo tipo que empezar iteradores, que ayuda con la terminada en null y lazos similares.
    • si constexpr

      • Atendiendo a la función a simplificar casi-código genérico.

    Misc

    Incorporaciones de biblioteca:

    Tipos de datos

    • std::variante del<Ts...>

      • Casi-siempre que no esté vacía última vez que lo comprobé?
      • Etiquetado tipo de unión
      • {impresionante|útil}
    • std::opcional

      • Tal vez tiene una parte de algo
      • Ridículamente útil
    • std::cualquier

      • Tiene uno de algo (que es copiable)
    • std::string_view

      • std::string como referencia-a-carácter-matriz o una subcadena
      • Nunca tomar una string const& de nuevo. También se puede hacer el análisis de un bajillion veces más rápido.
      • «hola mundo»sv
      • constexpr char_traits
    • std::byte más de lo que podía masticar.

      • Ni entero ni un personaje, acaba de datos

    Invocar cosas

    Sistema de archivos de TS v1

    Nuevos algoritmos

    • for_each_n

    • reduce

    • transform_reduce

    • exclusive_scan

    • inclusive_scan

    • transform_exclusive_scan

    • transform_inclusive_scan

    • Añadido para el roscado a los efectos expuestos, incluso si usted no los está usando rosca

    Roscado

    (partes de) Biblioteca Fundamentos de TS v1 no cubiertos por encima o por debajo

    Contenedor De Mejoras

    Puntero inteligente cambios

    Otros std tipo de mejoras:

    Misc

    Rasgos

    Obsoleto

    Isocpp.org ha tiene una lista independiente de los cambios desde C++14; ha sido parcialmente saqueado.

    Naturalmente TS trabajo continúa en paralelo, por lo que hay algunas TS que no están muy maduras, que tendrá que esperar para la siguiente iteración. El objetivo para la siguiente iteración es C++20 como se había planeado anteriormente, no en C++19 como algunos rumores implícita. C++1O ha sido evitados.

    Lista inicial tomada de este post de reddit y este post de reddit, con enlaces añadidos a través de google o de los de arriba isocpp.org página.

    Entradas adicionales saqueados de SD-6 característica-lista de pruebas.

    clang la lista de características de y la biblioteca de la lista de características están próximos a ser incendiada. Este no parece ser fiable, ya que es C++1z, no en C++17.

    estas diapositivas tenía algunas características que faltan en otros lugares.

    Mientras que «lo que se ha quitado» no pidieron, aquí está una breve lista de algunas cosas ((la mayoría?) anterior en desuso) que se quitan en C++17 de C++:

    Eliminado:

    Había rewordings. Yo estoy seguro de si estas tienen ningún impacto sobre el código, o si sólo están las limpiezas en la norma:

    Papeles aún no se han integrado en arriba:

    • P0505R0 (constexpr crono)

    • P0418R2 atómica (ajustes)

    • P0512R0 (argumento de plantilla de la deducción de ajustes)

    • P0490R0 (estructurado de unión ajustes)

    • P0513R0 (cambios a std::hash)

    • P0502R0 (paralelo excepciones)

    • P0509R1 (actualización de las restricciones en el manejo de excepciones)

    • P0012R1 (hacer excepción de las especificaciones de ser parte de el tipo de sistema)

    • P0510R0 (restricciones en variantes)

    • P0504R0 (etiquetas opcionales/variante/cualquiera)

    • P0497R0 compartido (ptr ajustes)

    • P0508R0 (estructurado de los enlaces de los tiradores de nodo)

    • P0521R0 (compartido puntero recuento de uso y único de cambios?)

    Especificación de cambios:

    Referencia adicional:

    Épica de la documentación.

    OriginalEl autor Yakk – Adam Nevraumont

Dejar respuesta

Please enter your comment!
Please enter your name here