我正在编写类似于 boost::promote 的促销模板别名,但适用于 C++11。这样做的目的是避免在从可变函数检索参数时出现警告。例如
template <typename T>
std::vector<T> MakeArgVectorV(int aArgCount, va_list aArgList)
{
std::vector<T> args;
while (aArgCount > 0)
{
args.push_back(static_cast<T>(va_arg(aArgList, Promote<T>)));
--aArgCount;
}
return args;
}
提升模板别名提升可变参数的默认参数提升之后的类型:1) 小于 int 的整数提升为 int 2) 浮点提升为 double
我的问题是可以提升标准 C++ 枚举,但不能提升 C++11 枚举类(编译器不会生成警告)。我希望提升使用常规枚举但忽略 C++11 枚举类。
如何区分我的提升模板别名中的枚举类和枚举?