home | help
std::conditional(3)	       C++ Standard Libary	     std::conditional(3)

NAME
     std::conditional - std::conditional

Synopsis
	Defined in header <type_traits>
	template< bool B, class T, class F >  (since C++11)
	struct conditional;

	Provides member typedef type, which is defined as T if B is true at com-
     pile time, or
	as F if B is false.

	If  the  program adds specializations for std::conditional, the behavior
     is undefined.

Member types
	Member type Definition
	type	    T if B == true, F if B == false

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

Possible implementation
	template<bool B, class T, class F>
	struct conditional { using type = T; };

	template<class T, class F>
	struct conditional<false, T, F> { using type = F; };

Example
     // Run this code

      #include <iostream>
      #include <type_traits>
      #include <typeinfo>

      int main()
      {
	  using Type1 = std::conditional<true, int, double>::type;
	  using Type2 = std::conditional<false, int, double>::type;
	  using Type3 =  std::conditional<sizeof(int)  >=  sizeof(double),  int,
     double>::type;

	  std::cout << typeid(Type1).name() << '\n';
	  std::cout << typeid(Type2).name() << '\n';
	  std::cout << typeid(Type3).name() << '\n';
      }

Possible output:
      int
      double
      double

See also
	enable_if conditionally removes a function overload or template special-
     ization from
	(C++11)   overload resolution
		  (class template)

http://cppreference.com 	   2024.06.10		     std::conditional(3)

home | help