Minimal type_traits with std::is_same, std::remove_cv and std::conditional