2008-11-11 13 views

Odpowiedz

18

Musisz umieścić typename naprzeciwko tej linii, od rodzaju robisz :: iterator po zależy od szablonu parametr T. tak:

template< class T > 
void example() { 
    typename std::list< boost::function<T()> >::iterator it; 
} 

Rozważmy linię

std::list< boost::function<T()> >::iterator * it; 

co może oznaczać mnożenie lub wskaźnik. Dlatego potrzebujesz typename, aby twoje zamiary były jasne. Bez niego kompilator nie przyjmuje typu, a zatem wymaga operatora lub semolonu składniowo.


Zobacz także nowy wpis w C++ FAQ Where to put template and typename on dependent names.

Powiązane problemy