Compartir a través de


Novedades de C++ en Visual Studio 2022

Visual Studio 2022 aporta muchas actualizaciones y correcciones al compilador y las herramientas de Microsoft C++. El IDE de Visual Studio ofrece mejoras significativas en el rendimiento y la productividad, y ahora se ejecuta de forma nativa como una aplicación de 64 bits.

Novedades de C++ en Visual Studio versión 17.11

Publicado en agosto de 2024

Para obtener más información, vea: Vea
Novedades para desarrolladores de C++ Novedades para desarrolladores de C++ en Visual Studio 2022 17.11
Bibliotecas estándar (STL) combinadas de C++26 y C++23, informes de defectos de C++20, resoluciones de problemas de LWG, mejoras de rendimiento, comportamiento mejorado y errores corregidos Registro de cambios de STL 17.11
Nuevas características del IDE de Visual Studio 17.11 Notas de la versión 17.11 de Visual Studio 2022
Mejoras de conformidad del lenguaje C++ en Visual Studio 2022 17.11 Mejoras de conformidad de C++, cambios de comportamiento y correcciones de errores en Visual Studio 2022 17.11

Una lista parcial de las nuevas características:

  • Mejoras en la biblioteca estándar:

    • La implementación de salida con formato ahora incluye std::range_formatter y formateadores para std::pair y std::tuple.
    • Se ha agregado compatibilidad con std::println() sin argumentos. Esto imprime una línea en blanco como se propone en P3142R0.
    • Vectorización mejorada para varios algoritmos, como replace_copy(), replace_copy_if(), ranges::replace_copy_ifranges::replace_copy, find_first_of() y ranges::find_first_of, para elementos de 8 y 16 bits, , mismatch(), find()ranges::mismatchranges::countranges::findcount() ranges::find_lasty .ranges::iota
  • Desarrollo de juegos en C++

    • Ahora puede agregar plantillas de clase, módulos y complementos comunes de Unreal Engine desde Visual Studio. Para obtener más información, vea Agregar clases, módulos y complementos de Unreal Engine en Visual Studio.
    • La nueva barra de herramientas de Unreal Engine proporciona acceso rápido a las acciones relacionadas con Unreal Engine desde Visual Studio. La barra de herramientas permite asociar rápidamente a los procesos de Unreal Engine, volver a examinar la caché de planos técnicos, acceder rápidamente al registro de motor de Unreal y proporcionar acceso rápido a la página de configuración de unreal Engine para Visual Studio. Para obtener más información, vea Barra de herramientas de unreal Engine.
    • Ahora puede filtrar los resultados de seguimiento por proyecto. Además, los resultados en cada fila muestran la ruta de acceso relativa y el nombre de archivo en lugar de la ruta de acceso completa. También se ha mejorado la agrupación de resultados en la vista Archivos incluidos:

    Captura de pantalla de los resultados de diagnóstico de archivos incluidos mejorados.

    La vista Archivos incluidos tiene una nueva columna para el proyecto. La columna Proyecto está seleccionada y se seleccionan proyectos como (Seleccionar todo), CompilerIdC, OpenAL, común, etc. Los archivos incluidos se enumeran por ruta de acceso relativa y nombre de archivo y agrupados juntos.

  • Depuración de CMake

    • Ahora puede depurar los archivos y CMakeLists.txt scripts de CMake en el depurador de Visual Studio para proyectos de CMake que tienen como destino Linux a través de Subsistema de Windows para Linux (WSL) o SSH. Para iniciar una sesión de depuración de CMake en Visual Studio, establezca un punto de interrupción en el CMakeLists.txt archivo y, a continuación, vaya a Configuración de caché del proyecto>con depuración de CMake.
  • Copilot

    • Al mantener el puntero sobre símbolos en el editor de código, haga clic en el botón Copilot Tell me more (Indicarme más ) en el cuadro de diálogo Información rápida para obtener más información sobre un símbolo determinado:

    Captura de pantalla de la ventana Información rápida.

    La ventana Información rápida se muestra encima de una función. El vínculo Tell me more (Decirme más) está resaltado.

    • GitHub Copilot puede generar sugerencias de nomenclatura para los identificadores (variables, métodos o clases) en función de cómo se usa el identificador y el estilo del código.

      Captura de pantalla del cuadro de diálogo Cambiar nombre de Copilot de GitHub.

      El cuadro de diálogo Cambiar nombre tiene un campo Nuevo nombre con una lista desplegable que muestra estas opciones: text_color, font_color, display_color, console_color y menu_text_color.

    Necesita una suscripción activa de GitHub Copilot. Haga clic con el botón derecho en la variable que desea cambiar de nombre y elija Cambiar nombre (Ctrl+R, Ctrl+R). Seleccione el icono de Sparkle de Copilot de GitHub para generar sugerencias de nomenclatura.

  • Depuración

    • Los puntos de interrupción condicionales en C++ son significativamente más rápidos.
  • Mejoras de diagnósticos

    • Diagnóstico mejorado al llamar a std::get<T> en un std::tuple que tiene varias instancias de en sus argumentos de T plantilla. MSVC usado para notificar:
      error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'.
      Ahora informa de lo siguiente:
      error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
    • Diagnóstico mejorado cuando std::ranges::to no se puede construir el resultado solicitado. MSVC usado para notificar:
      error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
      Ahora informa de lo siguiente:
      error C2338: static_assert failed: 'ranges::to requires the result to be constructible from the source range, either by using a suitable constructor, or by inserting each element of the range into the default-constructed object. (N4981 [range.utility.conv.to]/2.1.5)'

Novedades de C++ en Visual Studio, versión 17.10

Publicado en mayo de 2024

Para obtener más información, vea: Vea
Novedades para desarrolladores de C++ Novedades para desarrolladores de C++ en Visual Studio 2022 17.10
Bibliotecas estándar (STL) combinadas de C++26 y C++23, informes de defectos de C++20, resoluciones de problemas de LWG, mejoras de rendimiento, comportamiento mejorado y errores corregidos Registro de cambios de STL 17.10
Nuevas características del IDE de Visual Studio 17.10 Notas de la versión 17.10 de Visual Studio 2022
Mejoras de conformidad de C++ en Visual Studio 2022 17.10 Mejoras en la conformidad de C++, cambios de comportamiento y correcciones de errores en Visual Studio 2022 17.10

Una lista parcial de las nuevas características:

  • Actualización del conjunto de herramientas de MSVC: la versión del conjunto de herramientas de MSVC se actualiza de 19.39 a 19.40. Esto puede afectar a los proyectos que tienen suposiciones de versión. Para más información sobre algunas maneras en las que esto afectará a los proyectos que suponen que las versiones de MSVC son todas las versiones 19.3X para Visual Studio 2022, consulte Número de versión secundaria del conjunto de herramientas de MSVC 14.40 en VS 2022 v17.10.
  • Mejoras en la biblioteca estándar: la biblioteca estándar agregó compatibilidad con P2510R3 punteros de formato, que aporta el conjunto de especificadores de formato para punteros al usar std::format más en línea con los que ya existen para enteros. Se han mejorado las implementaciones vectorizadas de std::min_element, std::ranges::min y amigos.
  • Build Insights: ahora proporciona información de creación de instancias de plantilla. Consulte el artículo sobre la vista de plantillas para Build Insights en Visual Studio o la grabación sobre la vista de plantillas de Pure Virtual C++ para Build Insights en Visual Studio.
  • Complemento Unreal Engine: hay una nueva característica de participación para que el complemento Unreal Engine se ejecute en segundo plano, lo que reduce los costos de inicio. Se trata de una característica de participación que se activa a través de Herramientas>Opciones>Unreal Engine.
  • Nuevas características para Linux: consulte Nuevas características de desarrollo de Linux en Visual Studio.
  • Destinos de CMake: ahora puede anclar destinos en la vista Destinos de CMake.
  • Experiencia del usuario de Connection Manager: la experiencia del usuario proporciona una experiencia más fluida al conectarse a sistemas remotos. Para más información, consulte Mejoras de facilidad de uso en Connection Manager de Visual Studio.
  • Comentarios sobre solicitud de cambios: ahora puede ver los comentarios de GitHub y Azure DevOps directamente en el archivo de trabajo. Habilite la marca de características, Comentarios de solicitud de cambios en Opciones>Entorno>Características en versión preliminar y consulte la rama de solicitud de cambios para empezar.
  • Contenido generado por IA: GitHub Copilot ahora puede redactar descripciones de solicitudes de cambios. Requiere una suscripción activa de GitHub Copilot. Pruébelo haciendo clic en el icono de lápiz Agregar descripción de solicitud de cambios generada por IA de la ventana Crear una solicitud de cambios.
  • Vista previa de la imagen: mantenga el puntero sobre una ruta de acceso de imagen para ver una vista previa con detalles de tamaño. El tamaño está limitado a 500 px de ancho y alto.

    Captura de pantalla de la vista previa al pasar el puntero

    El mouse se desplaza sobre la línea std::filesystem::path vs_logo_path = "../images/vs_logo.png". Debajo aparece una vista previa del logotipo de Visual Studio y la información que tiene un tamaño de 251 x 500 píxeles y 13,65 KB.

  • Creación de puntos de interrupción o puntos de seguimiento: ahora puede crear puntos de interrupción condicionales o puntos de seguimiento directamente desde expresiones del código fuente desde el menú contextual. Esto funciona en nombres y valores de campo o propiedad de variables automáticas, locales, ventanas de inspección o información sobre datos.
  • Asociar al cuadro de diálogo de proceso: la funcionalidad proporcionada por el cuadro de diálogo Asociar al proceso es más fácil de usar. Ahora puede cambiar fácilmente entre las vistas de árbol y lista, organizar los procesos mejor con secciones contraíbles y seleccionar tipos de código con un cuadro combinado simplificado. Además, la característica "Seleccionar/Realizar seguimiento de ventana" ahora es más fácil de usar, lo que permite el seguimiento bidireccional, seleccionar un proceso resalta su ventana y hacer clic en una ventana selecciona su proceso.
  • Integración de GitHub Copilot: las extensiones de GitHub Copilot y Copilot Chat ahora están unificadas y ahora se envían directamente en Visual Studio. Para instalarlo, instale el componente GitHub Copilot en el Instalador de Visual Studio:

    Captura de pantalla de la opción de instalación de GitHub Copilot del Instalador de Visual Studio.

    La interfaz de GitHub Copilot está en la esquina superior derecha de Visual Studio. Para usarlo, necesita una suscripción activa de GitHub Copilot.

    Captura de pantalla del botón GitHub Copilot.

    El botón GitHub Copilot se muestra en la esquina superior derecha de Visual Studio. Tiene opciones para abrir una ventana de chat, la configuración de GitHub Copilot, obtener más información y administrar la suscripción de Copilot.

Novedades de C++ en Visual Studio, versión 17.9

Publicado en febrero de 2024

Para obtener más información, vea: Vea
Novedades para desarrolladores de C++ Novedades para desarrolladores de C++ en Visual Studio 2022 17.9
Características combinadas de la biblioteca estándar (STL) de C++23, mejoras de rendimiento, comportamiento mejorado, resoluciones de problemas LWG y errores corregidos Registro de cambios de STL 17.9
Nuevas características del IDE de Visual Studio 17.9 Notas de la versión 17.9 de Visual Studio 2022
Mejoras de conformidad de C++ en Visual Studio 2022 17.9 Mejoras en la conformidad de C++, cambios de comportamiento y correcciones de errores en Visual Studio 2022
Resumen de las actualizaciones de back-end de C++ Actualizaciones del back-end de MSVC desde Visual Studio 2022, versión 17.3

Una lista parcial de las nuevas características:

  • diagnóstico de #include, que proporciona un análisis detallado de las directivas #include. Para activar esta característica, haga clic con el botón derecho en un #include y elija directivas #include>Activar el diagnóstico de directivas #include. Encima de cada #include es el número de veces que el código hace referencia a ese archivo #include. Haga clic en el vínculo de referencia para ir a donde el código usa algo de ese archivo de encabezado. Para ver el tiempo de compilación de las directivas #include, ejecute Build Insights; para ello, vaya a Compilar>Ejecutar Build Insights en la solución>Compilar.

    Captura de pantalla de diagnóstico de #include.

    Encima de # include es un vínculo **reference** y muchas de las referencias a este archivo #include (en este caso 1). El tiempo de compilación también aparece (en este caso, menos de medio segundo).

  • Visualización del diseño de memoria, que muestra cómo se organiza la memoria para las clases, estructuras y uniones. Mantenga el puntero sobre un tipo y elija el vínculo Diseño de memoria en la información rápida para abrir una ventana dedicada que muestra el diseño de memoria del tipo seleccionado. Al mantener el puntero sobre tipos de datos individuales dentro de esta ventana se proporciona información detallada sobre su tamaño y desplazamiento dentro del tipo.

    Captura de pantalla de la ventana de diseño de memoria

    La ventana de diseño de memoria muestra el contenido de la clase Snake. Muestra los desplazamientos de memoria de los distintos campos de la clase, como las clases Point para la ubicación de la cabeza y el cuerpo, la puntuación, etc.

  • Ahora puede especificar su propio ejecutable de CMake personalizado. Esta característica es útil si quiere usar una versión específica de CMake que no se incluye con Visual Studio. Vaya a Herramientas>Opciones y seleccione CMake>General. Seleccione Habilitar ejecutable de CMake personalizado y especifique la ruta de acceso del directorio del ejecutable de CMake.

    Captura de pantalla del cuadro de diálogo opciones de CMake

    El cuadro de diálogo opciones de CMake con la opción "Habilitar ejecutable de CMake personalizado" y el campo "Directorio ejecutable de CMake" resaltado

  • IntelliSense mejorado con proyectos de Unreal Engine
  • Compatibilidad mejorada con C++23: std::format y std::spanformattable, range_format format_kind, y set_debug_format() como parte de los Intervalos de formato P2286R8<mdspan> por P0009R18 y los cambios de redacción posteriores que se aplicaron al estándar de C++23. Además, format() puede dar formato a punteros por P2510R3.

Novedades de C++ en Visual Studio, versión 17.8

Publicado en noviembre de 2023

Para obtener más información, vea: Vea
Novedades para desarrolladores de C++ Novedades para desarrolladores de C++ en Visual Studio 2022 17.8
Biblioteca estándar (STL) combinada C++26, características de C++23, extensiones de C++20, resoluciones de problemas de LWG, mejoras de rendimiento, comportamiento mejorado y errores corregidos Registro de cambios de STL 17.8
Nuevas características en el IDE de Visual Studio 17.8 Notas de la versión 17.8 de Visual Studio 2022
Mejoras en la conformidad de C++ en Visual Studio 2022 17.8 Mejoras en la conformidad de C++, cambios de comportamiento y correcciones de errores en Visual Studio 2022
Información general sobre las mejoras de C++ en Visual Studio, VS Code y vcpkg durante 2023 Un año de mejoras de C++

Una lista parcial de las nuevas características:

  • Diagnóstico estructurado de C++ en la ventana de salida y una nueva ventana de detalles del problema que proporciona más información sobre el error. Para obtener más información, consulte Ventana de detalles de problemas y resultados de SARIF estructurados.
  • Una característica que le permite visualizar el tamaño y la alineación de las clases, estructuras, uniones, tipos base o enumeraciones incluso antes de compilar el código. Mantenga el puntero sobre el identificador y una información rápida mostrará la información de tamaño y alineación.
  • Característica que sugiere cuándo marcar funciones miembro const porque no modifican el estado del objeto. Mantenga el puntero sobre una función miembro y haga clic en el icono de la bombilla para marcar la función como const.
  • Visual Studio ahora le pide que marque las funciones globales como estáticas a través del icono de destornillador que aparecerá junto al nombre de la función. Haga clic en el icono del destornillador para marcar la función como estática.
  • Las directivas #include sin usar se atenúan en el editor. Puede mantener el puntero sobre un include atenuado y usar el menú de bombilla para quitar ese include o todos los include no utilizados. También puede agregar directivas #include para las entidades que se incluyen indirectamente a través de otros encabezados. Para obtener más información, consulte Limpieza de directivas include de C/C++ en Visual Studio.
  • Más compatibilidad con Unreal Engine:
  • La compatibilidad con pruebas unitarias remotas de Linux ahora le permite ejecutar las pruebas de CTest y GTest en las máquinas Linux remotas desde el Explorador de pruebas de Visual Studio, al igual que las pruebas locales.

Novedades de C++ en Visual Studio, versión 17.7

Publicado en agosto de 2023

Para obtener más información, vea: Vea
Novedades para desarrolladores de C++ Novedades para desarrolladores de C++ en Visual Studio 2022 17.7
Nuevas características de C++ específicas para el desarrollo de juegos Liberación del poder de Visual Studio 2022 para el desarrollo de juegos de C++
Características combinadas de la biblioteca estándar (STL) de C++23, resoluciones de problemas LWG, mejoras de rendimiento, comportamiento mejorado y errores corregidos Registro de cambios de STL 17.7
Nuevas características en el IDE de Visual Studio 17.7 Notas de la versión 17.7 de Visual Studio 2022
Mejoras en la conformidad de C++ en Visual Studio 2022 17.7 Mejoras en la conformidad de C++, cambios de comportamiento y correcciones de errores en Visual Studio 2022

Una lista parcial de las nuevas características:

  • Sesiones de depuración más rápidas y tiempos de carga de proyectos más rápidos
  • Visualización paso a paso de la macroexpansión
  • Descarga con un solo clic para Subsistema de Windows para Linux (WSL)
  • Compatibilidad mejorada con comentarios de Doxygen
  • Información de compilación de C++ para el desarrollo de juegos
  • Se ha agregado /std:clatest para el compilador C.
  • Mejoras de proyectos de Unreal Engine, como intelliSense y colorización de sintaxis más rápidas, la capacidad de encontrar todas las referencias de Unreal Engine Blueprint, etc.

Novedades de C++ en Visual Studio, versión 17.6

Publicado en mayo de 2023

Para obtener más información, vea: Vea
Novedades para desarrolladores de C++ Novedades para desarrolladores de C++ en Visual Studio 2022 17.6
Características combinadas de la biblioteca estándar (STL) de C++23, resoluciones de problemas LWG, mejoras de rendimiento, comportamiento mejorado y errores corregidos Registro de cambios de STL 17.6
Nuevas características en el IDE de Visual Studio 17.6 Notas de la versión de Visual Studio 2022, versión 17.6
Mejoras en la conformidad de C++ en Visual Studio 2022 17.6 Mejoras en la conformidad de C++, cambios de comportamiento y correcciones de errores en Visual Studio 2022

Una lista parcial de las nuevas características incluye:

  • Depuración de scripts de CMake
  • Compatibilidad integrada con el lenguaje de sombreado de alto nivel (HLSL)
  • Visor de registros de Unreal Engine
  • VCPKG ahora se agrega de manera predeterminada
  • Compatibilidad inicial con C++20 en proyectos de C++/CLI y algunas características de biblioteca estándar de C++23 para intervalos.

Novedades de C++ en Visual Studio, versión 17.5

Publicado en febrero de 2023

Para obtener más información, vea: Vea
Novedades para desarrolladores de C++ Novedades para desarrolladores de C++ en Visual Studio 2022 17.5
Características combinadas de la biblioteca estándar (STL) de C++23, resoluciones de problemas LWG, mejoras de rendimiento, comportamiento mejorado y errores corregidos Registro de cambios de STL 17.5
Nuevas características en el IDE de Visual Studio 17.5 Notas de la versión de Visual Studio 2022, versión 17.5

Una lista parcial de las nuevas características incluye:

  • std::move, std::forward, std::move_if_noexcept y std::forward_like ahora no producen llamadas de función en código generado, incluso en modo de depuración. Este cambio evita las conversiones con nombre que provocan una sobrecarga innecesaria en las compilaciones de depuración. Se requiere /permissive- (o una opción que lo implique, como /std:c++20 o std:c++latest).

  • Se ha agregado [[msvc::intrinsic]]. Puede aplicar este atributo a las funciones no recursivas que constan de un único reparto y que sólo toman un parámetro.

  • Se ha agregado compatibilidad con la consola de Linux en el terminal integrado que permite la E/S del terminal.

  • Se ha agregado compatibilidad experimental inicial con primitivos atómicos C11 (<stdatomic.h>). Puede habilitar esta característica experimental con la opción /experimental:c11atomics en el modo /std:c11 o posterior.

  • Se ha agregado un nuevo conjunto de comprobaciones experimentales de alta confianza al Comprobador de duración para reducir el ruido.

  • Una nueva característica en versión preliminar, el Explorador de archivos remotos, le permite ver el directorio de archivos en las máquinas remotas dentro de VS, así como cargar y descargar archivos en él.

  • Se ha cambiado el control de versiones de los ejecutables de CMake enviados con Visual Studio para que coincidan con las versiones de Kitware.

  • Se ha agregado compatibilidad con Recarga activa a la plantilla Proyecto de CMake.

  • Ir a definición para C++ ahora usa un indicador más sutil de la operación que tarda más tiempo, reemplazando el cuadro de diálogo modal de versiones anteriores.

  • Se inició el lanzamiento de un experimento que proporciona resultados inteligentes adicionales en la lista de miembros y autocompletado de C++. Esta funcionalidad se conocía anteriormente como IntelliSense predictivo, pero ahora usa un nuevo método de presentación.

  • Ahora se envía un conjunto de herramientas nativo de Arm64 Clang con nuestra carga de trabajo de LLVM, lo que permite la compilación nativa en máquinas Arm64.

  • Se ha agregado la localización a Image Watch Extension (esta extensión está disponible en Marketplace y no se agrupa por el Instalador de Visual Studio).

  • Se ha agregado compatibilidad para abrir una ventana de Terminal en el contenedor para desarrolladores que se está ejecutando actualmente.

  • Se han realizado varias mejoras en la expansión de macros de IntelliSense. En particular, hemos habilitado la expansión recursiva en más contextos y hemos agregado opciones al elemento emergente para copiar la expansión en el Portapapeles o expandir la macro insertada.

  • Ahora se admite la supervisión simultánea en el monitor de serie. La supervisión simultánea permite supervisar varios puertos al mismo tiempo, en paralelo. Presione el botón más para abrir otro monitor de serie y empezar.

  • Ahora puede ver las propiedades de las clases base modificadas en un recurso de Unreal Blueprint sin salir de Visual Studio. Haga doble clic en una referencia de Blueprint para una clase o propiedad de C++ con el fin de abrir el Inspector de recursos de UE en Visual Studio.

  • Se ha habilitado la ejecución de DevContainers en una máquina Linux remota.

  • Se ha habilitado la selección de varios destinos para compilar en la vista Destino de CMake.

  • Se ha agregado compatibilidad con CMakePresets.json, versión 5. Consulte la documentación de CMake para obtener información sobre las nuevas características.

  • Se ha habilitado el Explorador de pruebas para compilar y probar varios destinos de CMake en paralelo.

  • Se ha agregado la opción "Abrir contenedor en terminal" a Contenedores de desarrollo.

  • Características de biblioteca estándar implementadas:

    • P2508R1 basic_format_string, format_string, wformat_string
    • P2322R6 ranges::fold_left, ranges::fold_right, etc.
    • P2321R2 views::zip (no incluye zip_transform, adjacent y adjacent_transform)

Novedades de C++ en Visual Studio, versión 17.4

Publicado en noviembre de 2022

Para obtener más información, vea: Vea
Novedades para desarrolladores de C++ Novedades para desarrolladores de C++ en Visual Studio 2022 17.4
Características combinadas de la biblioteca estándar (STL) de C++23, resoluciones de problemas LWG, mejoras de rendimiento, comportamiento mejorado y errores corregidos Registro de cambios de STL 17.4
Nuevas características en el IDE de Visual Studio 17.4 Notas de la versión 17.4 de Visual Studio 2022
Mejoras en la conformidad de C++ en Visual Studio 2022 17.4 Mejoras en la conformidad de C++, cambios de comportamiento y correcciones de errores en Visual Studio 2022

Una lista parcial de las nuevas características de la versión 17.4:

  • Se han mejorado los mensajes de error del compilador para proporcionar información más correcta y útil, especialmente para los conceptos.

  • Se ha agregado la opción MSVC experimental /experimental:log<directory> a la salida diagnósticos de SARIF estructurados al directorio especificado.

  • Se ha agregado compatibilidad con los atributos C23 a IntelliSense y se ha continuado el progreso en la compatibilidad con los módulos de C++20.

  • Se ha mejorado el rendimiento de la indexación al abrir una nueva solución. Los proyectos grandes podrían ver una mejora del 20 al 35 % con respecto a la versión 17.3.

  • Se ha mejorado la optimización del valor devuelto con nombre (NRVO):

    • Se ha habilitado NRVO para casos que implican el control de excepciones o bucles.
    • NRVO se habilita incluso en /Od si el usuario pasa la opción /Zc:nrvo, /std:c++20 o posterior o /permissive-.
    • Ahora puede deshabilitar NRVO con la opción /Zc:nrvo-.
  • Se ha actualizado la versión de LLVM incluida con Visual Studio a la versión 15.0.1. Para obtener más información sobre lo que está disponible, consulte las notas de la versión de LLVM y Clang.

  • Se ha agregado compatibilidad con Visual Studio para los artefactos vcpkg con proyectos de CMake. Para los proyectos que incluyen un manifiesto vcpkg, el entorno se activa automáticamente al abrir el proyecto. Puede obtener más información sobre esta característica en la entrada de blog sobre la activación del entorno vcpkg en Visual Studio.

  • Ahora puede usar Contenedores de desarrollo para los proyectos de C++. Puede obtener más información sobre esta característica en nuestra entrada de blog Contenedores de desarrollo para C++.

  • IntelliSense respeta ahora el orden de los encabezados preincluidos cuando uno de ellos es un PCH. Anteriormente, cuando se usaba un PCH a través de /Yu y se forzaba su inclusión a través de /FI, IntelliSense siempre lo procesaba primero, antes que cualquier otro encabezado incluido a través de /FI. Este comportamiento no coincidía con el comportamiento de compilación. Con este cambio, los encabezados /FI se procesan en el orden en que se especifican.

  • Se han quitado los prefijos internos de los nombres de CTest en el Explorador de pruebas.

  • Se ha actualizado la versión de CMake incluida con Visual Studio a la versión 3.24.1. Vea las notas de la versión de CMake para obtener detalles sobre lo que está disponible.

  • Actualización de Android SDK:

    • Se han quitado los scripts de Ant, por lo que los usuarios ya no ven plantillas basadas en Ant en el cuadro de diálogo Nuevo proyecto. Para obtener ayuda para migrar desde las plantillas de Ant a las plantillas de Gradle, consulte Migración de compilaciones desde Apache Ant.
    • Se ha agregado compatibilidad para la compilación con NDK 23 y 24.
    • Se ha actualizado el componente NDK a la versión 23 de LTS.
  • Se han agregado implementaciones vectorizadas de ranges::min_element(), ranges::max_element() y ranges::minmax_element().

  • Seguimos realizando un seguimiento de los últimos desarrollos en la estandarización de C++. La compatibilidad con estas características de C++23 está disponible mediante la inclusión de /std:c++latest en las opciones del compilador:

    • P2302R4 ranges::contains, ranges::contains_subrange

    • P2499R0 string_view El constructor de rango debería ser explicit

    • P0849R8auto(x): decay-copy en el idioma

      (La parte del compilador aún no está implementada. La parte de biblioteca se implementó en modo C++20 cuando se implementó inicialmente la compatibilidad con rangos).

    • P0881R7 <stacktrace>

    • P2301R1 Agregue un alias pmr para std::stacktrace

    • P1328R1 constexpr type_info::operator==()

    • P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right

    • P2441R2 views::join_with

  • Se ha agregado una opción "Navegación después de crear la declaración o definición" para permitirle elegir el comportamiento de navegación de la característica Crear declaración o definición. Puede seleccionar entre ver el código sin salir (el valor predeterminado), abrir el documento o sin navegación.

  • Las compilaciones de Arm64 de Visual Studio ahora agrupan las versiones de Arm64 de CMake y Ninja.

  • Se ha agregado compatibilidad con los valores preestablecidos de CMake de la versión 4. Vea las notas de la versión de CMake para obtener detalles sobre lo que está disponible.

  • Las conexiones del sistema remoto que usan el Administrador de conexiones ahora admiten SSH ProxyJump. ProxyJump se usa para acceder a un host SSH a través de otro host SSH (por ejemplo, para acceder a un host detrás de un firewall).

Novedades de C++ en Visual Studio, versión 17.3

Publicado en agosto de 2022

Para obtener más información, vea: Vea
Novedades para desarrolladores de C++ Mejoras de C++ en la versión 17.3
Características combinadas de la biblioteca estándar (STL) de C++23, resoluciones de problemas LWG, mejoras de rendimiento, comportamiento mejorado y errores corregidos Registro de cambios de STL 17.3
Nuevas características en el IDE de Visual Studio 17.3 Notas de la versión 17.3 de Visual Studio 2022
Mejoras en la conformidad de C++ en Visual Studio 2022 17.3 Mejoras en la conformidad de C++, cambios de comportamiento y correcciones de errores en Visual Studio 2022

Una lista parcial de las nuevas características de la versión 17.3:

  • La cadena de herramientas Arm64EC ya no está marcada como experimental y está lista para su uso en producción.
  • El terminal de Visual Studio ahora se puede usar como cliente SSH con las conexiones SSH almacenadas. Con las herramientas de C++ para Linux instaladas, abra la ventana de herramientas Terminal. La lista desplegable Terminal se rellena con las conexiones almacenadas. Al seleccionar una conexión, se abre una nueva ventana terminal dentro de Visual Studio que muestra un pseudoterminal en el sistema remoto. Se admiten los caracteres de control, los colores y el reconocimiento posicional del cursor.
  • Visual Studio ahora puede agregar plantillas de clase de Unreal Engine para los proyectos de UE. Para probar esta característica, asegúrese de que Compatibilidad del IDE con Unreal Engine está seleccionado en la carga de trabajo Desarrollo de juegos con C++ dentro del Instalador de Visual Studio. Al trabajar en un proyecto de UE, haga clic con el botón derecho en el proyecto o en una carpeta o filtro y seleccione Agregar>Clase de UE.
  • Ir a definición ahora recordará la firma anterior y navegará en consecuencia cuando no esté disponible una coincidencia mejor (por ejemplo, después de cambiar manualmente la firma de uno de los pares). Se ha mejorado la capacidad de respuesta de Ir a todos. Anteriormente, los resultados aparecían después de dejar de escribir. En la nueva experiencia, los resultados se muestran a medida que escriba.
  • En contextos que requieren la compleción del tipo enum (por ejemplo, asignaciones a variables enum, etiquetas case, tipo enum que vuelve, etc.), la lista de compleción automática ahora se filtra solo a los enumeradores coincidentes y las construcciones relacionadas.
  • Se ha agregado compatibilidad con NuGet PackageReference para proyectos de MSBuild de C++/CLI destinados a .NET Core. Este cambio se ha realizado para desbloquear los códigos base mixtos para que puedan adoptar .NET Core. Esto no funciona para otros tipos de proyecto de C++ ni para los tipos de proyecto de C++ destinados a .NET Framework. No hay planes para ampliar la compatibilidad con PackageReference a otros escenarios de C++. El equipo está trabajando en experiencias independientes que implican vcpkg para escenarios que no son de MSBuild y para agregar mayor funcionalidad.
  • Se ha agregado una ventana de Serial Monitor para el desarrollo insertado, disponible a través de Depurar>Windows>Serial Monitor.
  • Se ha mejorado la indexación de C++ en aproximadamente el 66 % en comparación con la versión 17.2.
  • Se ha actualizado la versión de CMake que se incluye con Visual Studio a la versión 3.23. Vea las notas de la versión de CMake 3.23 para obtener detalles sobre lo que está disponible.
  • Se han actualizado las versiones de las herramientas de LLVM que se incluyen con Visual Studio a la versión 14. Para obtener más información sobre lo que está disponible, consulte las notas de la versión de LLVM y Clang.
  • Se ha actualizado el conjunto de herramientas de C++ Dev 16.11 en paralelo a la versión 14.29.30145.00. La versión más reciente del conjunto de herramientas de C++ Dev 16.11 contiene correcciones de errores importantes, incluida la corrección de todos los informes de defectos de C++20 restantes. Para obtener más información sobre las correcciones de errores, incluidos los informes de defectos de C++20 en Dev 16.11, consulte Notas de la versión 16.11.14 de Visual Studio 2019.
  • Se han realizado varias mejoras en la experiencia en el editor de los módulos de C++. Estamos trabajando continuamente para mejorar la calidad de la experiencia, pero le animamos a probarlos en la versión 17.3. Notificar los problemas restantes a través de Developer Community.

Novedades de C++ en Visual Studio, versión 17.2

Publicado en mayo de 2022

Para obtener más información, vea: Vea
Novedades para desarrolladores de C++ Visual Studio 2022 17.2 ya está disponible
Bibliotecas estándar (STL) combinadas de C++20 y C++23, características de C++23, resoluciones de problemas de LWG, mejoras de rendimiento, comportamiento mejorado y errores corregidos Registro de cambios de STL 17.2
Nuevas características en el IDE de Visual Studio 17.2 Notas de la versión 17.2 de Visual Studio 2022
Mejoras en la conformidad de C++ en Visual Studio 2022 17.2 Mejoras en la conformidad de C++, cambios de comportamiento y correcciones de errores en Visual Studio 2022

Una lista parcial de las nuevas características de la versión 17.2:

  • Se ha agregado compatibilidad con el compilador en la característica de C++23 deducing thisthis, disponible en la opción /std:c++latest.
  • Se ha agregado compatibilidad con IntelliSense en las características de C++23 deducing thisthis y if consteval.
  • Se ha agregado compatibilidad con las sugerencias de inserción de nombres de parámetros y tipos, presionando Alt+F1 o pulsando dos veces Ctrl. Este comportamiento se puede personalizar en Herramientas > Opciones > Editores de texto > C/C++ > IntelliSense.
  • Se ha agregado compatibilidad experimental con módulos de C++20 en proyectos de CMake. Esta compatibilidad solo está disponible actualmente con el generador de Visual Studio (MSBuild).
  • En la versión 17.1 se ha introducido el registro periférico y las vistas RTOS para desarrolladores de software insertado. Seguimos mejorando las funcionalidades de esas vistas con mejoras de facilidad de uso en la versión 17.2:
    • La ventana de herramientas RTOS ahora está oculta de forma predeterminada. De esta forma, se evita que aparezcan ventanas de herramientas con mensajes de error que no son relevantes cuando no se usa un RTOS.
    • Cuando un usuario hace doble clic en un objeto RTOS en la ventana de herramientas, se agrega un reloj para el objeto.
    • Al seleccionar los valores inicial y final del puntero de pila en la ventana de herramientas RTOS, se abre en la ventana de memoria.
    • Se ha agregado el reconocimiento de subprocesos para destinos de dispositivo a la ventana de pila de llamadas.
    • Los usuarios ahora pueden seleccionar un icono de anclaje junto a periféricos, registros o campos para anclarlos en la parte superior de la vista de periféricos.
  • Se han agregado implementaciones del resto de informes de defectos de C++20 (también conocidos como backports). Todas las características de C++20 ahora están disponibles en la opción /std:c++20. Para más información sobre los backports implementados, consulte el proyecto Informes de defectos de C++20 en el repositorio de GitHub de Microsoft/STL y la entrada de blog Finalización de STL de MSVC/std:c++20.
  • Se han agregado varias características de la biblioteca de C++23, disponibles en la opción /std:c++latest. Para más información sobre las nuevas características, consulte el registro de cambios del repositorio de STL.
  • Se ha mejorado el rendimiento de la indexación inicial de C++ hasta un 20 %, según la profundidad del gráfico de inclusión.

Novedades de C++ en Visual Studio, versión 17.1

Publicado en febrero de 2022

Para obtener más información, vea: Vea
Novedades para desarrolladores de C++ Visual Studio 2022 17.1 ya está disponible
Características combinadas de la biblioteca estándar (STL) de C++23, resoluciones de problemas LWG, mejoras de rendimiento, comportamiento mejorado y errores corregidos Registro de cambios de STL 17.1
Nuevas características en el IDE de Visual Studio 17.1 Notas de la versión de Visual Studio 2022, versión 17.1
Mejoras en la conformidad de C++ en Visual Studio 2022 17.1 Mejoras en la conformidad de C++, cambios de comportamiento y correcciones de errores en Visual Studio 2022

Una lista parcial de las nuevas características de la versión 17.1:

  • Se ha agregado una nueva plantilla de valor preestablecido de configuración para configurar y compilar proyectos de CMake en un sistema macOS remoto con CMakePresets.json. También puede iniciar destinos de CMake en un sistema macOS remoto y depurar remotamente en el depurador de Visual Studio con el respaldo de GDB o LLDB.
  • Ahora puede depurar volcados de núcleo en un sistema macOS remoto desde Visual Studio con LLDB o GDB.
  • Las versiones de Clang y LLVM que se incluyen con Visual Studio se han actualizado a la versión 13.
  • La integración de CMake de Visual Studio solo se activa cuando se identifique un archivo CMakeLists.txt en la raíz del área de trabajo abierta. Si se identifica un archivoCMakeLists.txt en otro nivel del área de trabajo, se le pedirá que active la integración de CMake de Visual Studio con una notificación.
  • Nuevas vistas que permiten inspeccionar e interactuar con registros periféricos en microcontroladores y sistemas operativos en tiempo real (RTOS), disponibles a través de depuración>de registros de Windows >Embedded
  • Se ha agregado una nueva ventana de visualización de registros para destinos incrustados, disponible en Depurar>Ventanas>RTOS Objects (Objetos RTOS). Para obtener más información, vea Desarrollo de software insertado en Visual Studio.

Novedades de C++ en Visual Studio, versión 17.0

Publicado en noviembre de 2021

Para obtener más información, vea: Vea
Nuevas características en el IDE de Visual Studio 17.0 Notas de la versión 17.0 de Visual Studio 2022
Bibliotecas estándar (STL) combinadas de C++26 y C++23, informes de defectos de C++20, resoluciones de problemas de LWG, mejoras de rendimiento, comportamiento mejorado y errores corregidos Registro de cambios de STL 17.0
Mejoras en la conformidad de C++ en Visual Studio 2022 17.0 Mejoras en la conformidad de C++, cambios de comportamiento y correcciones de errores en Visual Studio 2022 17.10

Información general de algunas de las nuevas características de Visual Studio 2022, versión 17.0:

  • El IDE de Visual Studio, devenv.exe , ahora es una aplicación nativa de 64 bits.
  • El conjunto de herramientas de MSVC ahora tiene como valor predeterminado el hash de origen SHA-256 en los registros de depuración. Anteriormente, en el conjunto de herramientas se usaba MD5 de forma predeterminada para el hash de origen.
  • Las herramientas de compilación v143 ahora están disponibles mediante el instalador de Visual Studio y en las herramientas de compilación independientes.

Recarga activa para C++ nativo

  • Recarga activa para C++ permite realizar numerosos tipos de modificaciones de código en la aplicación en ejecución y aplicarlas sin necesidad de pausar la ejecución de la aplicación con algo parecido a un punto de interrupción.

En Visual Studio 2022, al iniciar la aplicación en el depurador, puede usar el botón Recarga activa para modificar la aplicación mientras se está ejecutando. Esta experiencia cuenta con la tecnología nativa Editar y continuar. Para obtener más información sobre las ediciones compatibles, consulte Editar y continuar (C++).

  • Recarga activa admite proyectos de CMake y OpenFolder.

Compatibilidad con WSL2

  • Ahora puede compilar y depurar de forma nativa en WSL2 sin establecer una conexión SSH. Se admiten proyectos de CMake multiplataforma y proyectos de Linux basados en MSBuild.

Compatibilidad mejorada con CMake

  • Se ha actualizado la versión de CMake que se incluye con Visual Studio a la versión 3.21. Para obtener más información sobre lo que está disponible en esta versión, consulte las notas de la versión 3.21 de CMake.

  • Las páginas de información general de CMake se actualizan para admitir CMakePresets.json.

  • Ahora puede configurar y compilar los proyectos de CMake con CMake 3.21 y CMakePresets.json v3.

  • Visual Studio ahora admite la opción buildPresets.targets en CMakePresets.json . Esta opción le permite crear un subconjunto de destinos en el proyecto de CMake.

  • El menú Proyecto en los proyectos de CMake se ha simplificado y expone opciones para "eliminar la caché y volver a configurarla" y para "ver la caché".

  • Se ha implementado la opción del compilador /scanDependencies para enumerar dependencias de módulo de C++20 para proyectos de CMake, como se describe en P1689R5. Se trata de un paso hacia la compatibilidad con la creación de proyectos basados en módulos con CMake y estamos trabajando para completar esta compatibilidad en versiones posteriores.

Mejoras de la biblioteca estándar

Aquí se destacan mejoras seleccionadas de la biblioteca estándar (STL). Para obtener una lista completa de nuevas funcionalidades, cambios, correcciones de errores y mejoras de rendimiento, consulte el registro de cambios del equipo de STL.

  • Se han agregado visualizadores de depuración para mejorar la forma en que se muestran los siguientes tipos: source_location, bind_front(), u8string (y sus iteradores), default_sentinel_t, unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view (y su iterador o centinela), ranges::ref_view, thread, thread::id, jthread y filesystem::path.
  • Se ha agregado [[nodiscard]] a la familia de funciones stoi() en <string> y a varias funciones en <locale>, como las funciones miembro collate y has_facet(), y las familias isalnum() y tolower().
  • P0980R1 Se ha configurado std::string constexpr en VS 2019 16.10. Ahora se admite para Clang.
  • P1004R2 Se ha configurado std::vector constexpr en VS 2019 16.10. Ahora se admite para Clang.

Características destacadas de C++23

  • P1048R1 Se ha agregado is_scoped_enum, un nuevo rasgo para la biblioteca estándar de C++, que detecta si un tipo es una enumeración con ámbito.
  • P1132R7 out_ptr(), inout_ptr().
  • P1679R3 contains() para basic_string y basic_string_view.
  • P1682R3 to_underlying() para enumeraciones.
  • P2162R2 Se permite la herencia de std::variant.
  • P2166R1 Se prohíbe la construcción de basic_string y basic_string_view de nullptr. Este cambio afecta directamente al código fuente. Un código que antes no tenía un comportamiento definido en el tiempo de ejecución ahora se rechaza con errores del compilador.
  • P2186R2 Se ha quitado la compatibilidad con la recolección de elementos no utilizados. Este cambio quita declare_reachable, undeclare_reachable, declare_no_pointers, undeclare_no_pointers y get_pointer_safety. Anteriormente, estas funciones no tenían ningún efecto.

Mejoras destacadas en el rendimiento

  • <format> ahora detecta cuándo se escribe en back_insert_iterator para un elemento basic_string o uno vector y hace llamadas más rápidas a insert() en la parte end() del contenedor.
  • Se ha mejorado el rendimiento de std::find() y std::count() para vector<bool> 19 y 26 veces respectivamente (no en porcentaje).
  • Se ha mejorado el rendimiento de std::count() para vector<bool>.
  • std::byte ahora tiene el mismo rendimiento que unsigned char en reverse() y variant::swap().

Compatibilidad con Clang y LLVM

  • Las herramientas de LLVM que se incluyen con Visual Studio se han actualizado a LLVM 12. Para obtener más información, consulte las notas de versión de LLVM.

  • La compatibilidad con Clang-cl se actualizó a LLVM 12.

  • Ahora puede depurar procesos que se ejecutan en un sistema remoto desde Visual Studio con LLDB.

C++ AMP en desuso

  • Los encabezados de AMP de C++ están en desuso. Incluir <amp.h> en un proyecto de C++ genera errores de compilación. Para silenciar los errores, defina _SILENCE_AMP_DEPRECATION_WARNINGS. Para obtener más información, consulte nuestros vínculos de desuso de AMP.

Mejoras de IntelliSense

  • Hemos realizado mejoras en IntelliSense de C++ al proporcionar resaltado de navegación y sintaxis para tipos de módulos importados y unidades de encabezado. IntelliSense es un área activa de inversión para nosotros. Ayúdenos a mejorar: seleccione Ayuda>Enviar comentarios para compartir sus comentarios en Developer Community.
  • Se ha mejorado el rendimiento de IntelliSense de C++ mediante la optimización del uso de encabezados almacenados en caché y el acceso a la base de datos de símbolos, lo que proporciona tiempos de carga mejorados para acceder al código.
  • El linter de código de IntelliSense para C++ está ahora activado de manera predeterminada, lo que proporciona sugerencias instantáneas a medida que escribe y corrige sugerencias para defectos de código comunes.
  • IntelliSense de C++ para proyectos de CMake ahora funciona cuando se usa un valor preestablecido con un nombre para mostrar.

Actualizaciones de cargas de trabajo de C++

  • Se ha actualizado a NDK r21 LTS en la carga de trabajo Desarrollo móvil con C++ .
  • Ahora la carga de trabajo Desarrollo de juegos con C++ instala la versión más reciente del motor Unreal con compatibilidad con Visual Studio 2022.

Mejoras en el análisis de código

  • El análisis de código ahora exige que se deben comprobar los valores devueltos de las funciones anotadas con _Check_return_ o _Must_inspect_result_.
  • Se ha mejorado la detección de desreferencia de punteros nulos en las herramientas de análisis de código.
  • Se ha agregado compatibilidad con gsl::not_null para analizar código.
  • Compatibilidad con Libfuzzer en la opción del compilador /fsanitize=fuzzer .

Notas de las versiones anteriores

Las notas de las versiones anteriores de C++ también están disponibles.

Problemas conocidos

IntelliSense para C++

Para obtener más información sobre otras incidencias abiertas y las soluciones alternativas disponibles para C++ en Visual Studio 2022, consulte la lista de incidencias de Developer Community para C++.

Comentarios y sugerencias

Estaremos encantados de ayudarle. Puede notificar un problema o sugerir una característica mediante el icono Enviar comentarios en la esquina superior derecha del instalador o del IDE de Visual Studio, o bien desde Ayuda>Enviar comentarios. Puede realizar un seguimiento de sus incidencias en Developer Community de Visual Studio, donde puede agregar comentarios o encontrar respuestas. También puede obtener ayuda gratuita para la instalación a través de nuestro servicio de soporte técnico de chat en directo.

Blogs

Aproveche las conclusiones y recomendaciones disponibles en el sitio blogs para desarrolladores de Microsoft para mantenerse al día en todas las nuevas versiones. En los blogs se incluyen publicaciones con mucha información sobre una amplia gama de características. El blog del equipo de C++ y el blog de Visual Studio son de especial interés.