2014-02-18 02:16, Ryan Beasley skrev:
Hi all,
I'm observing some odd behavior with one of libsigc++'s tests, and I'm
wondering whether there's a problem with my patch or the test itself.
====
sigc::visit_each(
print(),
sigc::compose( > A
sigc::bind(sigc::ptr_fun3(&foo), \
sigc::ref(a), > B
i), /
sigc::ptr_fun1(&bar))); > C
util->check_result(result_stream, "hit all targets: other other ");
====
It appears that unmodified visit_each doesn't dig into sigc::compose's
parameters, so it fails to visit each of the leaf types individually. With my
patch, I'm observing different visitor output, but which I believe to be
correct.
Expected "hit all targets: other other "
Got "hit all targets: other trackable int: 1other "
So, who's wrong? Me, the test, or both?
The test looks wrong. You mention a patch. Can you show what you've
modified? Perhaps you can attach your patch to your bug 724496. Or file
another bug, it you think this error is unrelated to the one in bug 724496.
====
Type of A
---------
sigc::compose1_functor<B, C>
Visiting results in
visit_each<T_action, B>(_A_action, _A_target.functor_);
(_A_target.functor_ is instance of B.)
visit_each<T_action, C>(_A_action, _A_target.get_); (_A_target.get_
is instance of C.)
Type of B
---------
sigc::bind_functor<
-1,
sigc::pointer_functor3<int, int, int, void>, > type D
sigc::reference_wrapper<{anonymous}::A>, > type E
int, (5 sigc::nils)>
Visiting results in
visit_each<T_action, sigc::pointer_functor3<int, int, int, void>
>(_A_action, _A_target.functor_);
visit_each<T_action, sigc::reference_wrapper<{anonymous}::A> >(_A_action,
_A_target.bound1_);
visit_each<T_action, int>(T_action, _A_target.bound2_);
Visiting type D leads to
print<D> -> "other"
Visiting type E leads to
visit_each<{anonymous}::print,
sigc::bound_argument<sigc::reference_wrapper<{anonymous}::A> > >
\--- visit_each<{anonymous}::print, sigc::limit_reference<{anonymous}::A,
false> >
\--- visit_each<{anonymous}::print, {anonymous}::A>
\--- with_trackable<::A, true> -> "trackable"
Visiting int leads to
print<int> -> "int 1"
Type of C
---------
sigc::pointer_functor1<int, void>
Visiting results in
visit_each<T_action, sigc::pointer_functor1<int, void> >(_A_action,
_A_target.functor_);
print<C> -> "other"
1. https://bugzilla.gnome.org/show_bug.cgi?id=724496
_______________________________________________
_______________________________________________
libsigc-list mailing list
libsigc-list@gnome.org
https://mail.gnome.org/mailman/listinfo/libsigc-list