2

クラス テンプレートで、テンプレート パラメータが列挙型かどうかを検出する方法は?

私がやりたいことの簡単な例を次に示します: http://ideone.com/3CafY。出力が正しくなるように IsTEnum() をどのように実装しますか?

この問題を解決するブースト関数が必要だと思いますが、現在のプロジェクトでブースト (標準ライブラリ std:: 関数も) を使用することは許可されていません。
それにもかかわらず、ブーストを使用するかどうかに関係なく、両方の方法を知りたいと思います (ソリューションがポインターまたは const 型を処理しない場合でも)。

4

2 に答える 2

7

その目的のためにC++11のstd::is_enumを使用できます。あなたはそのブーストが同じ解決策を持っているという点で正しいです。BoostまたはC++11を使用できない場合は、いつでも実装を調べてインスピレーションを得ることができます。

于 2012-06-29T05:58:10.727 に答える
0

C++11 を使用できない場合は、次のように記述します。

#include <tr1/type_traits>
#include <iostream>
using namespace std;

int main() {
   cout << tr1::is_enum<int>::value << "\n";
   return 0;
}

名前空間 tr1 には、標準以前の C++ で使用できる C++11 のヘッダー ファイルがいくつか含まれています。

于 2012-06-29T14:20:32.790 に答える