std::variant - Polimorfismo sin herencia

Introducción


Última actualización (terminología y funcionalidades de C++23): 18 de enero de 2026

Como analizamos en un post anterior, la plantilla de clase std::variant<>, incluida por vez primera en el estándar C++17, proporciona una unión etiquetada (tipo suma) con la funcionalidad típica de las uniones de C, si bien garantizando la seguridad de tipos.

Así, una instancia de std::variant<> podrá contener, en un instante dado, un objeto perteneciente a uno de varios tipos alternativos permitidos, o ningún valor en caso de error.

C++ en macOS - Integrando VSCode, Homebrew y CMake

Última actualización: 15 de septiembre de 2024.

Introducción


En este post, continuación de una serie anterior dedicada a MS Windows, explicaremos cómo configurar un entorno de trabajo para proyectos de C++ en macOS basado en:
  • Homebrew [1] como package manager, a través del cual podremos instalar bibliotecas no-estándar de uso extendido en la comunidad de desarrolladores en C++ –tales como Boost [2], {fmt}lib [3], Range-v3 [4] y nlohmann-JSON [5]–, build systems como Ninja [6] y, opcionalmente, el compilador GCC.
  • Visual Studio Code [7], un editor gratuito y de código abierto –si bien la descarga oficial se realiza bajo una licencia de software propietario– desarrollado desde 2015 por Microsoft para los sistemas Linux, MS Windows y macOS. Proporciona, entre otras funcionalidades, un alto grado de configuración por parte del usuario, resaltado de sintaxis, soporte para debugging, autocompleción e información de código (IntelliSense) y control integrado de Git. Fue declarado el entorno más popular entre desarrolladores en el Stack Overflow Developer Survey de 2021.
  • CMake [8] como herramienta de construcción, prueba, distribución e instalación de proyectos ampliamente extendida en el ámbito de la programación profesional en C y C++. Nos permitirá controlar el proceso de construcción de nuestros proyectos (build process) mediante ficheros CMakeLists.txt independientes de nuestro build system nativo (como Make o Ninja).