std::conditional
De cppreference.com
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
Ejecuta este código
#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) |