特定のタイプのみを許可する必要がある関数テンプレートがあります。私は他の質問を見てきましたが、それらはブーストとプリミティブのタイプを使用していました。この場合、ブーストはなく、ユーザー定義のクラスです。
元:
template<typename T>
myfunc(T&)
{ ... }
template<>
myfunc(Foo&)
{
static_assert(false, "You cannot use myfunc with Foo");
}
オブジェクトで呼び出すかどうかに関係なく、問題がstatic_assert
呼び出されます。myfunc
Foo
myfunc
で呼び出されたときにコンパイルを停止する方法が欲しいだけですFoo
。
この機能を実現するにはどうすればよいですか?