如代码所示:Type1,Type2,Type3都是根据模板 <>中的参数0来确定类型的。Type1为int, Type2为double,Type3为double;
因此a=3, b=4.2; a+b = 7.2;
#include <iostream>
#include <type_traits>
#include <typeinfo>
int main()
{
typedef typename std::conditional<sizeof(int) == sizeof(double), int, double>::type Type3;
typedef typename std::conditional<true, int, double>::type Type1;
typedef typename std::conditional<false, int, double>::type Type2;
std::cout << typeid(Type1).name() << std::endl;
std::cout << typeid(Type2).name() << std::endl;
std::cout << typeid(Type3).name() << std::endl;
Type1 a = 3.1;
Type2 b = 4.2;
std::cout << a + b << std::endl;
}
output:
i d d 7.2