は、私はこのようなベクトルがあるとします。コンテナ内の要素の型を取得する方法は?
std::vector<int> vec;
その後、私はvec
の要素の型を知りたいです。どうすれば入手できますか?あまりにも悪いdecltype(vec[0])
の結果はint&
になります。
は、私はこのようなベクトルがあるとします。コンテナ内の要素の型を取得する方法は?
std::vector<int> vec;
その後、私はvec
の要素の型を知りたいです。どうすれば入手できますか?あまりにも悪いdecltype(vec[0])
の結果はint&
になります。
これはあなたが探しているものですか?
std::vector<int>::value_type
また、参照を取り除くために
std::remove_reference<decltype(vec[0])>::type
を使用することができます。
もう1つのオプションはdecltype(vec)::value_type
です。ただし、Visual Studioではcurrently workがコンパイラのバグのために表示されません。そのコンパイラの回避策は、中間typedef
を作成することです。オブジェクト、c
については
typedef decltype(vec) vec_type;
vec_type::value_type foo;
、arraysを含む任意のコンテナタイプと、すべての標準ライブラリのcontainersなどstd::vector
などとstd::list
:私のために
typename std::remove_reference<decltype(*std::begin(c))>::type
二作品。ありがとうございました。 –
'decltype(vec):: value_type'のようなものがあると良いでしょう。 –
@Mikeそれは動作します。あなたはMSVCを使用していますか? 'decltype'式の後に' :: 'を書くと、エラーを引き起こすバグがコンパイラにあります。 – Praetorian