std::variant - Polimorfismo sin herencia

Introducción


Última actualización: 6 de agosto de 2020

Como analizamos en un post anterior, la plantilla de clase std::variant<>, incluida por vez primera en el estándar C++17, proporciona 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. Por ejemplo, una instancia de std::variant<char, int, double> permitirá almacenar un carácter char, un entero int o un double, a conveniencia del programador y sin incurrir en alojamientos dinámicos de memoria.

Puedes consultar algunos ejemplos de uso simples en la siguiente referencia:

https://en.cppreference.com/w/cpp/utility/variant

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

Última actualización: 2 de octubre de 2023.

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).