I'm building Boost 1.47.0 with GCC 4.6.1 and C++11 support enabled and get the following two errors building the Signals library:

libs/signals/src/named_slot_map.cpp: In member function ‘void boost::signals::detail::named_slot_map::disconnect(const boost::signals::detail::stored_group&)’:
libs/signals/src/named_slot_map.cpp:105:23: error: call of overloaded ‘erase(boost::signals::detail::named_slot_map::group_iterator&)’ is ambiguous
libs/signals/src/named_slot_map.cpp:105:23: note: candidates are:
/usr/local/include/c++/4.6.1/bits/stl_map.h:613:7: note: std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::erase(std::map<_Key, _Tp, _Compare, _Alloc>::const_iterator) [with _Key = boost::signals::detail::stored_group, _Tp = std::list<boost::signals::detail::connection_slot_pair>, _Compare = boost::function2<bool, boost::signals::detail::stored_group, boost::signals::detail::stored_group>, _Alloc = std::allocator<std::pair<const boost::signals::detail::stored_group, std::list<boost::signals::detail::connection_slot_pair> > >, std::map<_Key, _Tp, _Compare, _Alloc>::iterator = std::_Rb_tree_iterator<std::pair<const boost::signals::detail::stored_group, std::list<boost::signals::detail::connection_slot_pair> > >, std::map<_Key, _Tp, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<const boost::signals::detail::stored_group, std::list<boost::signals::detail::connection_slot_pair> > >]
/usr/local/include/c++/4.6.1/bits/stl_map.h:643:7: note: std::map<_Key, _Tp, _Compare, _Alloc>::size_type std::map<_Key, _Tp, _Compare, _Alloc>::erase(const key_type&) [with _Key = boost::signals::detail::stored_group, _Tp = std::list<boost::signals::detail::connection_slot_pair>, _Compare = boost::function2<bool, boost::signals::detail::stored_group, boost::signals::detail::stored_group>, _Alloc = std::allocator<std::pair<const boost::signals::detail::stored_group, std::list<boost::signals::detail::connection_slot_pair> > >, std::map<_Key, _Tp, _Compare, _Alloc>::size_type = long unsigned int, std::map<_Key, _Tp, _Compare, _Alloc>::key_type = boost::signals::detail::stored_group]
libs/signals/src/named_slot_map.cpp: In member function ‘void boost::signals::detail::named_slot_map::remove_disconnected_slots()’:
libs/signals/src/named_slot_map.cpp:128:35: error: call of overloaded ‘erase(std::_Rb_tree_iterator<std::pair<const boost::signals::detail::stored_group, std::list<boost::signals::detail::connection_slot_pair> > >::_Self)’ is ambiguous
libs/signals/src/named_slot_map.cpp:128:35: note: candidates are:
/usr/local/include/c++/4.6.1/bits/stl_map.h:613:7: note: std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::erase(std::map<_Key, _Tp, _Compare, _Alloc>::const_iterator) [with _Key = boost::signals::detail::stored_group, _Tp = std::list<boost::signals::detail::connection_slot_pair>, _Compare = boost::function2<bool, boost::signals::detail::stored_group, boost::signals::detail::stored_group>, _Alloc = std::allocator<std::pair<const boost::signals::detail::stored_group, std::list<boost::signals::detail::connection_slot_pair> > >, std::map<_Key, _Tp, _Compare, _Alloc>::iterator = std::_Rb_tree_iterator<std::pair<const boost::signals::detail::stored_group, std::list<boost::signals::detail::connection_slot_pair> > >, std::map<_Key, _Tp, _Compare, _Alloc>::const_iterator = std::_Rb_tree_const_iterator<std::pair<const boost::signals::detail::stored_group, std::list<boost::signals::detail::connection_slot_pair> > >]
/usr/local/include/c++/4.6.1/bits/stl_map.h:643:7: note: std::map<_Key, _Tp, _Compare, _Alloc>::size_type std::map<_Key, _Tp, _Compare, _Alloc>::erase(const key_type&) [with _Key = boost::signals::detail::stored_group, _Tp = std::list<boost::signals::detail::connection_slot_pair>, _Compare = boost::function2<bool, boost::signals::detail::stored_group, boost::signals::detail::stored_group>, _Alloc = std::allocator<std::pair<const boost::signals::detail::stored_group, std::list<boost::signals::detail::connection_slot_pair> > >, std::map<_Key, _Tp, _Compare, _Alloc>::size_type = long unsigned int, std::map<_Key, _Tp, _Compare, _Alloc>::key_type = boost::signals::detail::stored_group]


WHOA BUDDY!

Anyway, if you look into this, it is because my STL implementation has changed to the new definition for map::erase which takes a const_iterator.  As you can see, trying to erase with an iterator creates an ambiguous call between the const_iterator and key_type.

I came up with two solutions: One was to explicitly cast to a const_iterator and the other was to mark stored_group::stored_group<T>(const T&) as explicit.  Both work perfectly fine for me, but I like the explicit constructor solution better.  I attached that change as a patch...feel free to use it if it doesn't break anything (which it probably does).

--
Travis Gockel