Back to slide -- Keyboard shortcut: 'u'        next -- Keyboard shortcut: 'n'          metaprogramming/conditional/cond-2.cc - An sample use of conditional.Lecture 6 - slide 34 : 40
Program 1

// Conditional example - adapted from www.cplusplus.com.  Simple stuff.
// Illustrates std::conditional and std:is_same. 
// Ilustrates using syntax (4ed, pages 167). 

#include <iostream>
#include <type_traits>

int main() {

  // Establish aliases for selected types:

  using A = std::conditional<true, int, float>::type;                         // select int

  using B = std::conditional<false, int, float>::type;                        // select float

  using C = std::conditional<std::is_integral<A>::value, long, int>::type;    // select long - because type A is int

  using D = std::conditional<std::is_integral<B>::value, long, int>::type;    // select int - because B is float

  // Use established types:
  A a{};                                                                      // A variable of type A
  B b = [](B x) -> B{return x/2;}(10.0);                                      // Use of type B in a lambda expressions, and its immediate call

  // Print info about types:
  std::cout << std::boolalpha;                                                // print boolean values as false and true
                                                                              // (rather than 0 and 1)
  std::cout << "typedefs of int:" << std::endl;
  std::cout << "A: " << std::is_same<int,A>::value << std::endl;              // A: true
  std::cout << "B: " << std::is_same<int,B>::value << std::endl;              // B: false
  std::cout << "C: " << std::is_same<int,C>::value << std::endl;              // C: false
  std::cout << "D: " << std::is_same<int,D>::value << std::endl;              // D: true

  return 0;
}