boost :: promptに似ていますが、C++11用のプロモーションテンプレートエイリアスを作成しています。これの目的は、varidic関数から引数を取得するときの警告を回避することです。例えば
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)floatがdoubleにプロモートされます。
私の問題は、標準のC ++列挙型はプロモートできますが、C ++ 11列挙型クラスはプロモートされないことです(コンパイラーは警告を生成しません)。Promoteを通常の列挙型で動作させたいのですが、C++11列挙型クラスを無視します。
プロモートテンプレートエイリアスの列挙型クラスと列挙型の違いをどのように見分けることができますか?