我需要知道什么时候进行促销,以及促销活动是什么。我的猜测是
template <typename T>
struct promoted { using type = std::common_type_t<T, T>; };
template <typename T>
using promoted_t = typename promoted<T>::type;
显然,如果用户开始覆盖std::common_type
. 假设这不会发生,它会起作用吗?条件运算符应该在进一步评估之前应用促销。我确实认为有一天这样的东西应该出现在标准中。
如果你想知道我为什么想要这个,它是针对 C 级可变参数的:
auto r = va_arg( the_va_list, T );
如果我最初传入了一个在可变参数中使用时会被转换的类型,比如float
s 变成double
s,我应该输入原始类型 forT
还是 mangled 类型?如果是后者,我正在为此制作一个特征类型,这需要在最后一步中使用提升特征。