Espacios de nombres
Variantes
Acciones

std::is_const

De cppreference.com
< cpp‎ | types
 
 
Biblioteca de metaprogramación
Rasgos de tipo
Categorías de tipo
(C++11)
(C++11)(DR*)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11) 
(C++11)
(C++11)
Propiedades de tipos
is_const
(C++11)
(C++11)
(C++14)
(C++11)(en desuso en C++26)
(C++11)(hasta C++20*)
(C++11)(en desuso en C++20)
(C++11)
Constantes de rasgos de tipo
Metafunciones
(C++17)
Operaciones admitidas
Relaciones y consultas de propiedades
Modificaciones de tipos
(C++11)(C++11)(C++11)
Transformaciones de tipos
(C++11)(en desuso en C++23)
(C++11)(en desuso en C++23)
(C++11)
(C++11)(hasta C++20*)(C++17)

(C++11)
(C++17)
Aritmética racional en tiempo de compilación
Secuencias de enteros en tiempo de compilación
 
Definido en el archivo de encabezado <type_traits>
template< class T >
struct is_const;
(desde C++11)

std::is_const es un UnaryTypeTrait.

Si T es un tipo calificado constante (es decir, const, o const volatile), proporciona la constante miembro value igual a true. Para cualquier otro tipo, value es false.

El comportamiento de un programa que añade especializaciones para is_const o is_const_v (desde C++17) no está definido.

Contenido

[editar] Parámetros de plantilla

T - Un tipo a comprobar.

[editar] Plantilla de variable auxiliar

template< class T >
inline constexpr bool is_const_v = is_const<T>::value;
(desde C++17)

Heredado de std::integral_constant

Constantes miembro

value
[estático]
true si T es un tipo calificado constante, de lo contrario false.
(constante miembro pública estática)

Funciones miembro

operator bool
Convierte el objeto a bool, devuelve value.
(función miembro pública)
operator()
(C++14)
Devuelve value.
(función miembro pública)

Tipos miembro

Tipo Definición
value_type bool
type std::integral_constant<bool, value>

[editar] Notas

Si T es un tipo referencia, entonces is_const<T>::value es siempre false. La manera apropiada de comprobar un tipo que es potencialmente una referencia para saber si es constante es eliminar la referencia: is_const<typename remove_reference<T>::type>.

[editar] Posible implementación

template<class T> struct is_const          : std::false_type {};
template<class T> struct is_const<const T> : std::true_type {};

[editar] Ejemplo

#include <iostream>
#include <type_traits>
 
int main() 
{
    std::cout << std::boolalpha
        << std::is_const_v<int> << '\n' // falso
        << std::is_const_v<const int> << '\n' // verdadero
        << std::is_const_v<const int*> /*falso*/
        << " porque el puntero mismo puede cambiarse pero no el int al que apunta\n"
        << std::is_const_v<int* const> /*verdadero*/ 
        << " porque el puntero mismo no puede cambiarse pero el int al que apunta si\n"
        << std::is_const_v<const int&> << '\n' // falso
        << std::is_const_v<std::remove_reference_t<const int&>> << '\n' // verdadero
        ;
}

Salida:

false
true
false porque el puntero mismo puede cambiarse pero no el int al que apunta
true porque el puntero mismo no puede cambiarse pero el int al que apunta si
false
true

[editar] Véase también

Comprueba si un tipo está calificado con el calificador volatile
(plantilla de clase) [editar]
(C++17)
Obtiene una referencia a const para su argumento.
(plantilla de función) [editar]