Re: Forte - interesting (was [sigc] libsigc++ 1.9.13 fails on Solaris 9 sparc)



Am 09.07.2004 10:30:29 schrieb(en) Martin Schulze:
Am 08.07.2004 18:42:05 schrieb(en) Murray Cumming:
This looks like one for Martin. There is an ambiguity in
test_lambda.cc.

Luckily there are only 3 more minor tests left, and I think we've
solved
the important stuff.

This is good news! I will look at the stuff tomorrow.

Hm, obviously the trick to distinguish between "lambda<my_type>" and "non_lambdy_type" used for the lambda operators doesn't work.

Possible solution:
Don't use overloads. Instead change the function signatures in operator.h to "operator bla (const T1& a1, const T2& a2)". Then, a template is needed to deduce the type that should used to define the lambda operator template signature. If "T1" is equal to "lambda<my_type>" the template should return "my_type", otherwise it should return "typename unwrap_reference<T1>::type".

No more time to implement this now. I will resume the investigation on Tuesday. Murray, could you open a bug report to keep track of this, please?

Thanks!

 Martin



P.S.: <MHL Schulze t-online de> doesn't exist anymore.
Please use mschulze cvs gnome org or martin-ml hippogriff de



/sgnome/gnome2.4/forte/sparc-solaris/bin/CC  -I. -I. -I.. -I.. -I..
-
g -c -o test_lambda.o test_lambda.cc
"../sigc++/adaptors/lambda/group.h", line 205: Warning (Anachronism):
Type names qualified by template parameters require "typename".
"../sigc++/adaptors/lambda/group.h", line 305:     Where: While
specializing "sigc::lambda_group2<sigc::T_functor, sigc::T_type1,
sigc::T_type2>".
"../sigc++/adaptors/lambda/group.h", line 305: Where: Specialized
in
non-template code.
"../sigc++/adaptors/lambda/group.h", line 333: Warning (Anachronism):
Type names qualified by template parameters require "typename".
"../sigc++/adaptors/lambda/group.h", line 435:     Where: While
specializing "sigc::lambda_group3<sigc::T_functor, sigc::T_type1,
sigc::T_type2, sigc::T_type3>".
"../sigc++/adaptors/lambda/group.h", line 435: Where: Specialized
in
non-template code.
"test_lambda.cc", line 61: Error: Overloading ambiguity between
"sigc::operator+<sigc::internal::lambda_select1,
sigc::internal::lambda_select2>(const
sigc::lambda<sigc::internal::lambda_select1>&, const
sigc::lambda<sigc::internal::lambda_select2>&)" and "sigc::operator
+<sigc::internal::lambda_select1,
sigc::lambda<sigc::internal::lambda_select2>>(const
sigc::lambda<sigc::internal::lambda_select1>&,
sigc::lambda<sigc::internal::lambda_select2>)".
"test_lambda.cc", line 66: Error: Overloading ambiguity between
"sigc::operator*<sigc::internal::lambda_select2,
sigc::internal::lambda_select3>(const
sigc::lambda<sigc::internal::lambda_select2>&, const
sigc::lambda<sigc::internal::lambda_select3>&)" and
"sigc::operator*<sigc::internal::lambda_select2,
sigc::lambda<sigc::internal::lambda_select3>>(const
sigc::lambda<sigc::internal::lambda_select2>&,
sigc::lambda<sigc::internal::lambda_select3>)".
"test_lambda.cc", line 66: Error: Overloading ambiguity between
"sigc::operator+<sigc::internal::lambda_select1,
sigc::lambda_operator<sigc::arithmetic<sigc::multiplies>,
sigc::internal::lambda_select2, sigc::internal::lambda_select3>> (const
sigc::lambda<sigc::internal::lambda_select1>&, const
sigc::lambda<sigc::lambda_operator<sigc::arithmetic<sigc:: multiplies>,
sigc::internal::lambda_select2, sigc::internal::lambda_select3>>&)"
and
"sigc::operator+<sigc::internal::lambda_select1,
sigc::lambda<sigc::lambda_operator<sigc::arithmetic<sigc:: multiplies>, sigc::internal::lambda_select2, sigc::internal::lambda_select3>>> (const
sigc::lambda<sigc::internal::lambda_select1>&,
sigc::lambda<sigc::lambda_operator<sigc::arithmetic<sigc:: multiplies>,
sigc::internal::lambda_select2, sigc::internal::lambda_select3>>)".
"test_lambda.cc", line 86: Error: Overloading ambiguity between
"sigc::operator<<<std::ostream &, sigc::internal::lambda_select1> (const
sigc::lambda<std::ostream &>&, const
sigc::lambda<sigc::internal::lambda_select1>&)" and
"sigc::operator<<<std::ostream &,
sigc::lambda<sigc::internal::lambda_select1>>(const
sigc::lambda<std::ostream &>&,
sigc::lambda<sigc::internal::lambda_select1>)".
4 Error(s) and 2 Warning(s) detected.
make[2]: *** [test_lambda.o] Error 4
make[2]: Leaving directory `/jds/libsigc/libsigc++-2.0.3/tests'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/jds/libsigc/libsigc++-2.0.3'
make: *** [all] Error 2

On Thu, 2004-07-08 at 16:50 +0100, Damien Carbery wrote:
> Failed in tests.
> I'm swamped today so I'll look at the next tarball tomorrow.
>
> Murray Cumming wrote:
> > On Thu, 2004-07-08 at 15:20 +0100, Damien Carbery wrote:
> >
> >>Failed. Log and sigc++config.h attached.
> >
> >
> > Great. It looks like are are near the end, and the last 2 errors
were good catches by Forte. How about this one?
> >
> > http://www.murrayc.com/misc/libsigc++-2.0.3test3.tar.gz
> >
>
--
Murray Cumming
murrayc murrayc com
www.murrayc.com
www.openismus.com

_______________________________________________
libsigc-list mailing list
libsigc-list gnome org
http://mail.gnome.org/mailman/listinfo/libsigc-list

_______________________________________________
libsigc-list mailing list
libsigc-list gnome org
http://mail.gnome.org/mailman/listinfo/libsigc-list



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