特殊化が明示的に書かれていない型に対して、テンプレート関数を使って何とか禁止することはできますか?私は私が専門としようとすると、そのfooはテンプレート関数ではありません、私はコンパイラが言うそして原因、関数のジェネリックバージョンをスキップすることができないブロック非特異的なテンプレートC++
template <typename T>
void foo(){}
template <>
void foo<int>(){}
int main(int argc, char* argv[]){
foo<int>(); //ok
foo<char>(); //Wrong - no specialized version for char.
}
のようなものを意味します。私は単純にジェネリック関数でコンパイルされないものを書き、何らかの理由を説明するコメントを追加することができますが、これは非常に参考になりません。私がしたいのは、コンパイラに "foo()is not defined"のようなエラーが出るようにすることです。