Re: [sigc] Re: [Bug 147391] - test_lambda does not compile with SUN Forte 5.5



Am 14.08.2004 19:50:50 schrieb(en) Damien Carbery:
Wow, I think you got it.
make log attached.

Cool! The only question left is whether the conversion "reference_to_array->template_wrapping_that_reference" is somehow possible with the FORTE to get this lambda expression working:

 (sigc::var(std::cout) << _1 << sigc::var("\n"))("hello world");

Cheers!

 Martin

----- Original Message -----
From: Martin Schulze <martin-ml hippogriff de>
Date: Friday, August 13, 2004 10:07 pm
Subject: Re: [sigc] Re: [Bug 147391] - test_lambda does not compile
with SUN Forte 5.5

> Hi Damien!
>
> Sorry for the break - Now I have time to look at this error.
> Obviously
> it occurs in the compatibility module, the reason being that the
> FORTE
> does not handle the "const" keyword correctly when building a slot
> from
> a const member method.
>
> However, the implementation causing the error does not differ from
> libsigc++-1.2's so most likely slots referring to const member
> methods
> didn't work with the FORTE before. Therefore, the compatibility
> module
> doesn't need to solve this non-trivial problem.
>
> Instead, I will remove the const member method test from
> test_compatibility.cc and upload to:
>
>  http://www.hippogriff.de/libsigc++-2.0.4-test5.tar.gz
>
> Please try this one!
>
> Regards,
>
>  Martin
>
>
> Am 11.08.2004 11:03:08 schrieb(en) Damien Carbery:
> > /sgnome/tools/sparc-solaris/forte/SOS8/SUNWspro/bin/CC  -I. -I.
-I..
> > -I.. -I..    -g -c -o test_compatibility.o test_compatibility.cc
> > "../sigc++/object_slot.h", line 175: Error: Could not find a
> match
> > for
> > sigc::bound_mem_functor1<void, foo, const std::string
> > &>::bound_mem_functor1(const foo, void(foo::*)(const std::string
> > &)const).
> > "test_compatibility.cc", line 57:     Where: While instantiating
> > "SigC::slot<void, const std::string &, foo, foo>(const foo&,
> > void(foo::*)(const std::string &)const)".
> > "test_compatibility.cc", line 57:     Where: Instantiated from
> > non-template code.
> > 1 Error(s) detected.
> > make[2]: *** [test_compatibility.o] Error 1
> > make[2]: Leaving directory `/jds/libsigc/libsigc++-2.0.4/tests'
> >
> >
> > FYI: I used tarball test4.
> > I work with a clean directory each time, removing the old stuff
> > first.
> >
> > Damien
> >
> > ----- Original Message -----
> > From: Martin Schulze <martin-ml hippogriff de>
> > Date: Tuesday, August 10, 2004 6:24 pm
> > Subject: Re: [sigc] Re: [Bug 147391] - test_lambda does not
compile
> > with SUN Forte 5.5
> >
> > > Am 10.08.2004 18:09:36 schrieb(en) Damien Carbery:
> > > > make failed.
> > > >
> > > > To be sure I have the correct tarball:
> > > > $ cksum libsigc++-2.0.4-test3.tar.gz
> > > > 761559274 1767826 libsigc++-2.0.4-test3.tar.gz
> > >
> > > The tarball is correct. I don't understand why the FORTE doesn't
> > > choose
> > > the template specialization:
> > >
> > >  template <class T_type>
> > >  struct convert_array
> > >  { typedef T_type& type; };
> > >
> > >  template <class T_type, int N>
> > >  struct convert_array<T_type[N]>
> > >  { typedef T_type* type; };
> > >
> > >  [...]
> > >
> > > 'convert_array<const T_type>::type' (with T_type='char(&)[2]')
> > > gives
> > > 'const char(&)[2]' instead of 'const char*'. gcc works as
> expected.> >
> > > This is unnerving! Especially since glibmm uses the same trick
to
> > > distinguish between array types and other types.
> > >
> > > Probably there is a compiler bug. I will upload a tarball that
has
> > > the
> > > offending lines in test_lambda.cc disabled so that we can move
on.
> > > Please try:
> > >
> > >  libsigc++-2.0.4-test4.tar.gz
> > >
> > > in two hours or so.
> > >
> > > Regards,
> > >
> > >  Martin
> > >
> >
>




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]