можно ли выбрать тип в зависимости от размера во время компиляции?
Неработающий прототип будет
template<typename T, typename U> struct Bigger { using type = (sizeof(T) > sizeof(U)) ? T : U; };
Да, std::conditional_t может использоваться как "условный оператор" времени компиляции:
std::conditional_t
using type = std::conditional_t<(sizeof(T) > sizeof(U)), T, U>;