1

typeidに基づく実行時の型決定について時々読んでいます。次のコードを試します

#include <iostream>
#include <vector>
#include <typeinfo>

typedef std::vector<int> Vector;

template <class T> void foo(T &v)
{
  cout << typeid(Vector::value_type).name() << endl; // this is ok
  cout << typeid(T::value_type).name() << endl; // this doesn't compile
}

void main(void)
{Vector v;

 foo(v);
}

上記のコードは、特定の型を typeid に入れる場合にのみコンパイルされますが、代わりにテンプレート T を使用すると機能しません。では、コンテナ v がある場合、実行時に値の型を決定するにはどうすればよいでしょうか? ありがとう。

4

1 に答える 1