2013-05-12 9 views

Antwort

7

Ist das wonach Sie suchen?

std::vector<int>::value_type 

Sie können auch

std::remove_reference<decltype(vec[0])>::type 

Verwendung der Referenz loszuwerden. Eine andere Möglichkeit ist die Verwendung von decltype(vec)::value_type. Dies ist jedoch aufgrund eines Compiler-Fehlers in Visual Studio nicht currently work. Eine Problemumgehung für diesen Compiler besteht darin, ein Intermediate typedef zu erstellen.

typedef decltype(vec) vec_type; 
vec_type::value_type foo; 
+0

Die zweiten Arbeiten für mich. Vielen Dank. –

+0

Es wäre besser, wenn es etwas wie 'decltype (vec) :: value_type' gibt. –

+2

@Mike Das funktioniert. Du benutzt MSVC, nicht wahr? Es gibt einen Fehler im Compiler, der Fehler verursacht, wenn Sie '' 'nach einem' declltype' Ausdruck schreiben. – Praetorian

0

Für Objekt, c, jegliche Art Container einschließlich arrays und all Standard-Bibliothek containers wie std::vector und std::list:

typename std::remove_reference<decltype(*std::begin(c))>::type

Verwandte Themen