Package: libboost-dev
Version: 1.33.1-4
Severity: normal
Tags: patch

this simple source:

#include <boost/bind.hpp>
#include <boost/signal.hpp>

struct connection
{
     boost::signal<void()> disc_sig;
};

struct statement
{
     statement(connection & c);

     void disconnect() {}
};

statement::statement(connection & c)
{
   c.disc_sig.connect(boost::bind(&statement::disconnect, this));
}


compile with no problem on g++-4.0, but with g++-4.1 this is the
output:

/usr/include/boost/bind.hpp: In function ‘void boost::visit_each(V&, const 
boost::_bi::value<T>&, int) [with V = 
boost::signals::detail::bound_objects_visitor, T = statement*]’:
/usr/include/boost/bind.hpp:239:   instantiated from ‘void 
boost::_bi::list1<A1>::accept(V&) const [with V = 
boost::signals::detail::bound_objects_visitor, A1 = 
boost::_bi::value<statement*>]’
/usr/include/boost/bind/bind_template.hpp:150:   instantiated from ‘void 
boost::_bi::bind_t<R, F, L>::accept(V&) const [with V = 
boost::signals::detail::bound_objects_visitor, R = void, F = 
boost::_mfi::mf0<void, statement>, L = 
boost::_bi::list1<boost::_bi::value<statement*> >]’
/usr/include/boost/bind.hpp:1213:   instantiated from ‘void 
boost::visit_each(V&, const boost::_bi::bind_t<R, F, L>&, int) [with V = 
boost::signals::detail::bound_objects_visitor, R = void, F = 
boost::_mfi::mf0<void, statement>, L = 
boost::_bi::list1<boost::_bi::value<statement*> >]’
/usr/include/boost/visit_each.hpp:25:   instantiated from ‘void 
boost::visit_each(Visitor&, const T&) [with Visitor = 
boost::signals::detail::bound_objects_visitor, T = boost::_bi::bind_t<void, 
boost::_mfi::mf0<void, statement>, 
boost::_bi::list1<boost::_bi::value<statement*> > >]’
/usr/include/boost/signals/slot.hpp:121:   instantiated from 
‘boost::slot<SlotFunction>::slot(const F&) [with F = boost::_bi::bind_t<void, 
boost::_mfi::mf0<void, statement>, 
boost::_bi::list1<boost::_bi::value<statement*> > >, SlotFunction = 
boost::function<void ()(), std::allocator<void> >]’
boost_test.cpp:18:   instantiated from here
/usr/include/boost/bind.hpp:1208: error: no matching function for call to 
‘visit_each(boost::signals::detail::bound_objects_visitor&, statement* const&, 
int)’

The attached simple patch seem to be a solution.

This bug make me unable to package wengophone-ng for sid with gcc-4.1.

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (990, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.16-2-686
Locale: LANG=it_IT.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8)

Versions of packages libboost-dev depends on:
ii  libstdc++6-4.0-dev [libstdc++ 4.0.3-4    The GNU Standard C++ Library v3 (d
ii  libstdc++6-4.1-dev [libstdc++ 4.1.1-7    The GNU Standard C++ Library v3 (d

libboost-dev recommends no packages.

-- no debconf information

-- 
---------------------------------------------------------------------
|    Marco Nenciarini    | Debian/GNU Linux Developer - Plug Member |
| [EMAIL PROTECTED] | http://www.prato.linux.it/~mnencia       |
---------------------------------------------------------------------
Key fingerprint = FED9 69C7 9E67 21F5 7D95  5270 6864 730D F095 E5E4

*** /usr/include/boost/bind.hpp~        2005-10-16 23:27:52.000000000 +0200
--- /usr/include/boost/bind.hpp 2006-07-04 18:22:17.000000000 +0200
***************
*** 27,32 ****
--- 27,33 ----
  #include <boost/type.hpp>
  #include <boost/bind/arg.hpp>
  #include <boost/detail/workaround.hpp>
+ #include <boost/visit_each.hpp>
  
  // Borland-specific bug, visit_each() silently fails to produce code
  
#include <boost/bind.hpp>
#include <boost/signal.hpp>

struct connection
{
     boost::signal<void()> disc_sig;
};

struct statement
{
     statement(connection & c);

     void disconnect() {}
};

statement::statement(connection & c)
{
   c.disc_sig.connect(boost::bind(&statement::disconnect, this));
}

Attachment: signature.asc
Description: Digital signature

Reply via email to