
Frank Mori Hess:
On Monday 13 April 2009, Beman Dawes wrote:
Signals2 is failing five tests on all Mac OS testers.
See http://beta.boost.org/development/tests/release/developer/signals2.html
Please fix or markup.
The failures seem to be due to some bug particular to gcc 4.0 that affects bind. See for example:
http://beta.boost.org/development/tests/release/developer/output/Sandia-leop...
Has anyone seen this before and have a suggestion for a workaround?
I haven't. What seems to be happening is that when you pass _1, which is inline arg<1> _1() { .. } to A1 const& a1, A1 is properly deduced as a function type, but the const is not dropped, as it should be; instead, the type of a1 becomes arg<1> (&)() const (which is illegal BTW). When this a1 is passed (by value) to boost::bind, it decays to its corresponding pointer type, arg<1> (*)() const - which is also illegal. :-) A workaround is to use pass by value instead of A1 const&.