ice with a big template

Vincent Torri Vincent.Torri@iecn.u-nancy.fr
Sat Jul 9 00:00:00 GMT 2005


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
>



More information about the Gcc-help mailing list