C++ está estandarizado por el grupo de trabajo de la ISO denominado JTC1/SC22/WG21. Hasta la fecha, ha publicado 6 revisiones del estándar de C++ y está trabajando en la siguiente revisión, C++23.
Si deseas conocer el estándar que usa tu compilador por defecto, puedes probar el siguiente código:
#include<iostream>intmain(){
if (__cplusplus == 202002L)
std::cout << "C++20";
elseif (__cplusplus == 201703L)
std::cout << "C++17";
elseif (__cplusplus == 201402L)
std::cout << "C++14";
elseif (__cplusplus == 201103L)
std::cout << "C++11";
elseif (__cplusplus == 199711L)
std::cout << "C++98";
elsestd::cout << "pre-standard C++";
}
Guárdalo en un archivo con extensión .cpp
. Para compilar y ejecutar el programa en macOS, que usa el compilador Apple Clang, puedes escribir en la terminal:
clang++ -stdlib=libc++ test.cpp
./a.out
Preguntas
Mencionaste 6 revisiones pero solo se imprimen 5, ¿cuál es la revisión faltante?
La revisión faltante es C++03
del año 2003. La macro de preprocesador __cplusplus
devuelve el mismo valor 199711L
para los estándares C++98
y C++03
.
¿Cuál es la importancia de la revisión del estándar al momento compilar?
Cada estándar provee nuevas características al lenguaje C++. Por ejemplo, si deseas usar funciones anónimas (lambdas) deberías usar como mínimo la revisión C++11
.
¿Por qué no usas using namespace std
?
Es considerada una mala práctica según las pautas de C++. Mas información aquí.