#ifndef TYPES_H #define TYPES_H namespace NumberSize { template struct Conditional { typedef IfTrue dummy; }; template struct Conditional { typedef IfFalse dummy; }; template using SizeCheck = Conditional; template using Signed = SizeCheck::dummy>::dummy>::dummy>; template using Unsigned = SizeCheck::dummy>::dummy>::dummy>; } typedef NumberSize::Signed<8>::dummy int64; typedef NumberSize::Signed<4>::dummy int32; typedef NumberSize::Signed<2>::dummy int16; typedef NumberSize::Signed<1>::dummy int8; typedef NumberSize::Unsigned<8>::dummy uint64; typedef NumberSize::Unsigned<4>::dummy uint32; typedef NumberSize::Unsigned<2>::dummy uint16; typedef NumberSize::Unsigned<1>::dummy uint8; #endif