私が作成しているコンストラクタテンプレートでは、クラステンプレートのインターフェイスに静的アサートをしたいと思います。状況の基本的な(非コンパイル)の例は次のとおりです。私の最高の推測では、バズに機能を追加しているが、これはテンプレート化することができないので、クラステンプレートへのインターフェイスの静的アサート
class Baz
{
}
template<typename T>
class Bar: public Baz
{
}
template<typename T>
class Qux: public Baz
{
}
class Foo
{
template<typename T>
Foo(T typePar , Baz& baz)
{
// here I would like to assert that Baz is an interface to a class
specialized on T
}
}
、私は今どのように私はでそれを呼び出すことができませんコンパイル時。
'Baz'が実際に' Bar 'または' Qux 'への参照であることをコンパイル時にチェックしたいのですか?これは、動的な型の 'baz'が実行時に異なるものになる可能性があるため、実行できません。 –
TartanLlama
'Baz&'をテンプレートパラメータに変更してチェックしますが、 'Baz'をコンストラクタに渡すことができませんでした。最初にキャストする必要があります。 – TartanLlama
私はあなたが何を意味するかを見ます。それをテンプレートパラメータに変更することは、私のための選択肢ではありません。それでは、私はこの静的なアサーションを忘れてしまいます – laurisvr