3

たとえばstdで、テンプレートの「タイプ」にアクセスすることができます

std::vector<int>::size_type

テンプレートパラメータとして渡されたオブジェクトに同じことをすることは可能ですか? 例えば:

template<int i>
class A {
//?
};

A<3> instance;
int number = instance::???? //<--- assigns 3 to number

実行時にオブジェクト型に渡された 3 を再度取得することは可能ですか? A クラスに特定のメンバーを作成しない場合 (オブジェクトのサイズが大きくなります)

ありがとう

4

2 に答える 2

5

変数の型はコンパイル時にコンパイラに知られています。

template<int i>
int get(const A<i> & instance)
{
    return i;
}
于 2012-09-06T19:17:16.087 に答える
2
template<int i>
class A { 
public:
  enum { number = i };
};

int main() {
  A<3> instance;
  std::cout << instance.number;
  return 0;
}
于 2012-09-06T19:18:15.833 に答える