#include #include void printType(DB::UInt8 x) { std::cout << "UInt8"; } void printType(DB::UInt16 x) { std::cout << "UInt16"; } void printType(DB::UInt32 x) { std::cout << "UInt32"; } void printType(DB::UInt64 x) { std::cout << "UInt64"; } void printType(DB::Int8 x) { std::cout << "Int8"; } void printType(DB::Int16 x) { std::cout << "Int16"; } void printType(DB::Int32 x) { std::cout << "Int32"; } void printType(DB::Int64 x) { std::cout << "Int64"; } void printType(DB::Float32 x) { std::cout << "Float32"; } void printType(DB::Float64 x) { std::cout << "Float64"; } void printType(DB::NumberTraits::Error x) { std::cout << "Error"; } template void ifRightType() { printType(T0()); std::cout << ", "; printType(T1()); std::cout << " -> "; printType(typename DB::NumberTraits::ResultOfIf::Type()); std::cout << std::endl; } template void ifLeftType() { ifRightType(); ifRightType(); ifRightType(); ifRightType(); ifRightType(); ifRightType(); ifRightType(); ifRightType(); ifRightType(); ifRightType(); } int main(int argc, char ** argv) { printType(DB::NumberTraits::ResultOfAdditionMultiplication::Type()); std::cout << std::endl; printType(DB::NumberTraits::ResultOfAdditionMultiplication::Type()); std::cout << std::endl; printType(DB::NumberTraits::ResultOfAdditionMultiplication::Type()); std::cout << std::endl; printType(DB::NumberTraits::ResultOfSubtraction::Type()); std::cout << std::endl; printType(DB::NumberTraits::ResultOfSubtraction::Type()); std::cout << std::endl; printType(DB::NumberTraits::ResultOfSubtraction::Type()); std::cout << std::endl; printType(DB::NumberTraits::ResultOfFloatingPointDivision::Type()); std::cout << std::endl; printType(DB::NumberTraits::ResultOfFloatingPointDivision::Type()); std::cout << std::endl; printType(DB::NumberTraits::ResultOfIntegerDivision::Type()); std::cout << std::endl; printType(DB::NumberTraits::ResultOfModulo::Type()); std::cout << std::endl; ifLeftType(); ifLeftType(); ifLeftType(); ifLeftType(); ifLeftType(); ifLeftType(); ifLeftType(); ifLeftType(); ifLeftType(); ifLeftType(); return 0; }