fork(1) download
  1. #include <iostream>
  2. #include <typeinfo>
  3. #include <type_traits>
  4.  
  5. using namespace std;
  6.  
  7. // Unspecialized version
  8. template<typename...Ts>
  9. struct Tmin
  10. {
  11. using type = void;
  12. };
  13.  
  14. template<typename T>
  15. struct Tmin<T>
  16. {
  17. using type = T;
  18. };
  19.  
  20. template<typename T1, typename T2, typename...Ts>
  21. struct Tmin<T1, T2, Ts...>
  22. {
  23. using type = typename std::conditional<sizeof(T1) < sizeof(T2),
  24. typename Tmin<T1, Ts...>::type, typename Tmin<T2, Ts...>::type
  25. >::type;
  26. };
  27.  
  28. int main()
  29. {
  30. cout << typeid(Tmin<float, int, double>::type).name() << endl;
  31.  
  32. return 0;
  33. }
  34.  
  35.  
  36.  
  37.  
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
i