Was ist abhängig Bereich und was bedeutet Typname im Zusammenhang mit dem folgenden Fehler?Verschachtelte Vorlagen mit abhängigen Bereich
$ make
g++ -std=gnu++0x main.cpp
main.cpp:18:10: error: need 'typename' before 'ptrModel<std::vector<Data> >::Type' because 'ptrModel<std::vector<Data> >' is a dependent scope
make: *** [all] Error 1
/*
* main.cpp
*/
#include <vector>
#include <memory>
template<typename T>
struct ptrModel
{
typedef std::unique_ptr<T> Type;
};
template<typename Data>
struct ptrType
{
typedef ptrModel< std::vector<Data> >::Type Type;
};
int main()
{
return 0;
}
In Ordnung, aber ist es nicht wahr, macht es keinen Sinn, eine Membervariable typedef einzugeben? – user383352
Ja, aber das hilft nicht unbedingt aufgrund einiger Details darüber, wie Templates vom Compiler geparst werden. Siehe die akzeptierte Antwort auf diese Frage: http://stackoverflow.com/questions/642229/why-do-i-need-to-use-typedef-typename-in-g-but-not-vs –
Ich fand auch [ Diese Antwort] (http://stackoverflow.com/a/6571836/24874) ist sehr hilfreich, wenn Sie zum ersten Mal auf diesen Fehler und dieses Konzept stoßen. –