C ++のメタプログラミング手法でちょっとしたスマートペアクラスを実装しようとしています。クラスにさまざまな型と定数を含めることができるようにしたい。以下のコードのように:
template <typename F, typename S>
struct Pair {
typedef F first;
typedef S second;
};
template <typename F, bool Cond>
struct Pair {
typedef F first;
static const bool second = Cond;
};
しかし、このコードは gcc 4.8.1 でコンパイル エラーを引き起こします。
error: template parameter ‘class S’
template <typename F, typename S>
^
error: redeclared here as ‘bool Cond’
const テンプレート パラメータによって構造体をオーバーロードする方法はありますか?