Espacios de nombres
Variantes
Acciones

std::conditional

De cppreference.com
< cpp‎ | types
 
 
Biblioteca de servicios
 
Apoyo de tipos
Tipos básicos
Tipos fundamentales
Tipos enteros de anchura fija (C++11)
Límites numéricos
Interfaz de C de límites numéricos
Información de tipo
en tiempo de ejecución
Rasgos de tipos
Categorías de tipos
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Propiedades de tipos
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(hasta C++20)
(C++11)(en desuso en C++20)
(C++11)
Constantes de rasgos de tipos
Metafunciones
(C++17)
Contexto de evaluación constante
Operaciones soportadas
Relaciones y consultas de propiedades
Modificaciones de tipos
(C++11)(C++11)(C++11)
Transformaciones de tipos
(C++11)
(C++11)
(C++17)
conditional
(C++11)
(C++11)(hasta C++20)(C++17)
 
Definido en el archivo de encabezado <type_traits>
template< bool B, class T, class F >
struct conditional;
(desde C++11)

Proporciona la definición de tipo (typedef) miembro type, que se define como T si B es true en tiempo de compilación, o como F si B es false.

El comportamiento de un programa que añade especializaciones para conditional no está definido.

Contenido

[editar] Tipos miembro

Tipo miembro Definición
type T si B == true, F si B == false

[editar] Tipos auxiliares

template< bool B, class T, class F >
using conditional_t = typename conditional<B,T,F>::type;
(desde C++14)

[editar] Posible implementación

template<bool B, class T, class F>
struct conditional { typedef T type; };
 
template<class T, class F>
struct conditional<false, T, F> { typedef F type; };

[editar] Ejemplo

#include <iostream>
#include <type_traits>
#include <typeinfo>
 
int main() 
{
    typedef std::conditional<true, int, double>::type Type1;
    typedef std::conditional<false, int, double>::type Type2;
    typedef std::conditional<sizeof(int) >= sizeof(double), int, double>::type Type3;
 
    std::cout << typeid(Type1).name() << '\n';
    std::cout << typeid(Type2).name() << '\n';
    std::cout << typeid(Type3).name() << '\n';
}

Posible salida:

int
double
double

[editar] Véase también

(C++11)
Condicionalmente elimina una sobrecarga de función o especialización de plantilla de la resolución de sobrecargas.
(plantilla de clase) [editar]