2

クラスがあります

template <typename T>

    class C
    {
     static const int K=1;
     static ostream& print(ostream& os, const T& t) { return os << t;}
    };

Cをintに特化したいと思います。

 //specialization for int
 template <>
 C<int>{
 static const int K=2;
}

intで機能するデフォルトのprintメソッドをそのままにして、定数を変更するだけです。一部の専門分野では、<<演算子がないため、K = 1を維持し、印刷方法を変更したいと思います。

どうすればよいですか?

4

2 に答える 2

9

あなたはこのようにそれを行うことができます:

template <typename T>
class C {
   static const int K;
   static ostream& print(ostream& os, const T& t) { return os << t;}
};

// general case
template <typename T>
const int C<T>::K = 1;

// specialization
template <>
const int C<int>::K = 2;
于 2010-06-11T14:54:29.053 に答える
3

C ++ 0xの場合:

static const int K = std::is_same<T, int>::value ? 2 : 1;

于 2010-06-11T15:42:16.173 に答える