char
これは、C ++ 11テンプレートのコンパイルに関して、型の特性を利用して、signed char
またはunsigned char
型のパラメーターに対してのみ関数のオーバーロードを有効にするさまざまな方法についてのオープンな議論です。
満足のいくものですがstd::enable_if
、std::is_same
タイプアサーション(PSを参照)の複合ロジックは、特にchar
符号付きにもかかわらず、すべての一致するタイプが列挙に使用されるという点で賢くはありません。したがって、誰かが型アサーションをより容易にする可能性のある他の句または複合ロジックを指定できることを望んでいます(多分std::is_integral
、std::is_arithmetic
またはstd::is_signed
?)。
PS:
template <typename type>
void foo(std::enable_if<std::is_same<type, char>::value||std::is_same<type, signed char>::value||std::is_same<type, unsigned char>::value, type> x)
{
}