Problem mit Template template parameter ...
-
Hi,
folgender code voller templates ...
template<class T> struct f { ... }; template<template<class> class TT> struct FFF { ... template<class T> struct ff { ... }; }; template<template<class> class TT> struct F { ... }; template<template<class> class TT1, template<class> class TT2> void TEST (F<TT1>,F<TT2>) { // error: expected a class template, got FFF<F1>::ff ... F<FFF<TT1>::ff> test; ... }; int main(...) { ... // klappt! F<FFF<f>:ff> Test; ... }
Das Problem: der erste Aufruf F<FFF<TT1>::ff> test; bringt einen Fehler, der zweite F<FFF<f>::ff> Test; klappt hingegen, und ich würde gern wissen wieso ... hat jemand eine Idee?
Thx!
-
Da der Typ FFF<TT1>::ff von einem Template-Parameter abhängt (nämlich TT1), weiss der Compiler nicht dass Du einen Typ ansprechen willst. ff könnte genausogut eine Methode oder ein Datum sein. Abhilfe schafft typename:
F<typename FFF<TT1>::ff> test;
-
LordJaxom schrieb:
Da der Typ FFF<TT1>::ff von einem Template-Parameter abhängt (nämlich TT1), weiss der Compiler nicht dass Du einen Typ ansprechen willst. ff könnte genausogut eine Methode oder ein Datum sein. Abhilfe schafft typename:
F<typename FFF<TT1>::ff> test;
allerdings ist ff kein Typ sondern ein Template. Die Begründung ist sonst sinngemäß richtig, es muss heißen
F<FFF<TT1>::template ff> test;
-
Oh, soweit habe ich garnicht geschaut (hab wohl schon einen Textbaustein abgerufen). Danke camper