私が元々望んでいたことは、おそらくC++ 11が関与していない可能性があることが判明した後に、要件を少し変更して、 。コンパイル時にベースクラスが "interface"であるかどうかを確認する
基本的に私はクラスが「インターフェース」から継承している場合は、コンパイル時にチェックしたいです。インターフェイスでは、純粋な仮想メソッドのみでクラスを意味します。 私は、次のコードを実行したい:Tは純粋仮想メソッドのみ、それがコンパイルされ、その方法の一つが、その後失敗していない場合がある場合は、ここに
template <typename T>
class Impl : public T {
public:
STATIC_ASSERT_INTERFACE(T);
};
動作です。
誰もがそのようなことを考えることができますか?
本当にすべてのメソッドは純粋な仮想ですか?デストラクタ? – Andrzej
おそらく 'T 'にも基本クラスがあるかどうかをチェックし、そうであればそれらも"インタフェース "かどうかをチェックしたいと思うでしょう。しかし答えは確かに "いいえ"です。 – MSalters