1
0
forked from boostorg/bind

Fixed a visit_each-related bug exposed by strict two-phase lookup

[SVN r33761]
This commit is contained in:
Peter Dimov
2006-04-21 13:14:58 +00:00
parent 683d699e4a
commit c69a4ad382
2 changed files with 31 additions and 5 deletions

View File

@@ -1159,20 +1159,41 @@ BOOST_BIND_OPERATOR( >=, greater_equal )
#endif #endif
// visit_each, ADL
#if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ )
template<class V, class T> void visit_each( V & v, value<T> const & t, int )
{
using boost::visit_each;
BOOST_BIND_VISIT_EACH( v, t.get(), 0 );
}
template<class V, class R, class F, class L> void visit_each( V & v, bind_t<R, F, L> const & t, int )
{
t.accept( v );
}
#endif
} // namespace _bi } // namespace _bi
// visit_each // visit_each, no ADL
template<class V, class T> void visit_each(V & v, _bi::value<T> const & t, int) #if defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) || defined( __BORLANDC__ )
template<class V, class T> void visit_each( V & v, _bi::value<T> const & t, int )
{ {
BOOST_BIND_VISIT_EACH(v, t.get(), 0); BOOST_BIND_VISIT_EACH( v, t.get(), 0 );
} }
template<class V, class R, class F, class L> void visit_each(V & v, _bi::bind_t<R, F, L> const & t, int) template<class V, class R, class F, class L> void visit_each( V & v, _bi::bind_t<R, F, L> const & t, int )
{ {
t.accept(v); t.accept( v );
} }
#endif
// bind // bind
#ifndef BOOST_BIND #ifndef BOOST_BIND

View File

@@ -206,6 +206,11 @@
template<class V> void accept(V & v) const template<class V> void accept(V & v) const
{ {
#if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ )
using boost::visit_each;
#endif
BOOST_BIND_VISIT_EACH(v, f_, 0); BOOST_BIND_VISIT_EACH(v, f_, 0);
l_.accept(v); l_.accept(v);
} }