Hello again, With : typedef typename adaptor::adaptor<typename adaptor::caller<Functor, typename adaptor::decayer<FunctorMethodPtr>::type> > my_type; return my_type(functor); there is no compilation problem. maybe there is a gcc bug. Vincent Torri On Fri, 8 Jul 2005, Vincent Torri wrote: > > Hello, > > i'm compiling a program with gcc 4.1.0 (not 4.0.1, it's not a mistake ;), > but i've also tried gcc 4.0.0 and there's the ice too), and gcc complains > about that part of the program : > > template <typename Functor, typename FunctorMethodPtr> > typename adaptor::adaptor<typename adaptor::caller<Functor, typename > adaptor::decayer<FunctorMethodPtr>::type> > > adapt(Functor const& functor, FunctorMethodPtr) > { > return typename adaptor::adaptor<typename adaptor::caller<Functor, > typename adaptor::decayer<FunctorMethodPtr>::type> >(functor); > } > > The error reported by gcc is: > > ../../src/functions/../parser/adapt.h: In function > 'avs::parser::adaptor::adaptor<avs::parser::adaptor::caller<Functor, > typename avs::parser::adaptor::decayer<FunctorMethodPtr>::type>, typename > avs::parser::adaptor::caller<Functor, typename > avs::parser::adaptor::decayer<FunctorMethodPtr>::type>::ResultType> > avs::parser::detail::adapt(const Functor&, FunctorMethodPtr)': > ../../src/functions/../parser/adapt.h:50: internal compiler error: tree > check: expected class 'type', have 'declaration' (namespace_decl) in > dependent_type_p, at cp/pt.c:12020 > > line 50 is the line where the 'return' is. > > I'm not skilled enough to know if it's a problem with gcc or with the > program. > > I would also like to point out that there is no problem with gcc 3.3.4. > > Does someone see any problem in the code above, or a workaround ? > > Thank you > > Vincent Torri >