30分前に私はバリデーショナルテンプレートパラメータを発見しましたが、今は完全にフックされています。C++定型テンプレートクラス終了
私は、マイクロコントローラの出力ピンに静的なクラスベースの抽象化を使用しています。私は1つのピンとして扱うことができるようにいくつかの出力ピンをグループ化したい。以下のコードは動作しますが、私はこれを試してみました0パラメータに代わりの1
template< typename pin, typename... tail_args >
class tee {
public:
typedef tee<tail_args...> tail;
static void set(bool b){
pin::set(b);
tail::set(b);
}
};
template< typename pin >
class tee<pin> {
public:
static void set(bool b){
pin::set(b);
}
};
に再帰を終了することができるはずだと思うけど、コンパイラ(GCC)は、これを考慮していないようだ。
template<>
class tee<> : public pin_output {
public:
static void set(bool b){}
};
エラーメッセージは長いですが、基本的にはティーがないと言います<>。再帰を終了するには、私のティー<に何か問題が>ありますか、それは不可能です
使用しているGCCのバージョンは何を?それはGCC 4.8ですか? '-std = C++ 11'フラグ(' -Wall'でも可)を渡しましたか? –
あなたのタイプは 'template class tee'でなければなりません。終了ケースは' template <> class tee <> {}; 'でなければなりません。 –
@Basile:4.7.2;私は-std = C++ 0x;を使用しました。 -std = C++ 11を使用すると、ウォールは変更されません。 –