Index: boost/bind/placeholders.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/bind/placeholders.hpp,v retrieving revision 1.14 diff -d -u -r1.14 placeholders.hpp --- boost/bind/placeholders.hpp 6 Oct 2005 19:03:19 -0000 1.14 +++ boost/bind/placeholders.hpp 4 May 2007 17:07:34 -0000 @@ -25,7 +25,13 @@ namespace { -#if defined(__BORLANDC__) || defined(__GNUC__) +#if !defined(BOOST_BIND_ENABLE_INLINE_PLACEHOLDERS) +# if defined(__BORLANDC__) || BOOST_WORKAROUND(BOOST_GCC, <= 0x0400) +# define BOOST_BIND_ENABLE_INLINE_PLACEHOLDERS +# endif +#endif + +#if defined(BOOST_BIND_ENABLE_INLINE_PLACEHOLDERS) static inline boost::arg<1> _1() { return boost::arg<1>(); } static inline boost::arg<2> _2() { return boost::arg<2>(); } Index: boost/config/compiler/gcc.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/config/compiler/gcc.hpp,v retrieving revision 1.31 diff -d -u -r1.31 gcc.hpp --- boost/config/compiler/gcc.hpp 14 Mar 2007 09:20:38 -0000 1.31 +++ boost/config/compiler/gcc.hpp 4 May 2007 17:07:34 -0000 @@ -13,6 +13,8 @@ // GNU C++ compiler setup: +#define BOOST_GCC ((__GNUC__ << 8) | __GNUC_MINOR__) + #if __GNUC__ < 3 # if __GNUC_MINOR__ == 91 // egcs 1.1 won't parse shared_ptr.hpp without this: Index: libs/bind/bind.html =================================================================== RCS file: /cvsroot/boost/boost/libs/bind/bind.html,v retrieving revision 1.36 diff -d -u -r1.36 bind.html --- libs/bind/bind.html 9 Nov 2006 19:29:41 -0000 1.36 +++ libs/bind/bind.html 4 May 2007 17:08:00 -0000 @@ -76,7 +76,7 @@

Implementation

Files

Dependencies

-

Number of Arguments

+

Arguments

"__stdcall", "__cdecl", "__fastcall", and "pascal" Support

visit_each support

@@ -818,9 +818,22 @@
  • boost/type.hpp
  • -

    Number of Arguments

    +

    Arguments

    This implementation supports function objects with up to nine arguments. This is an implementation detail, not an inherent limitation of the design.

    +

    The placeholder arguments, _1 ... _9, are usually implemented as + objects with internal linkage. Some compilers support an inline placeholder + implementation, which avoids defining data in a header file at the cost of + not supporting the TR1 (3.6.4) CopyConstructible requirement. To enable + inline placeholders define the macro + BOOST_BIND_ENABLE_INLINE_PLACEHOLDERS before including + <boost/bind.hpp>. Some compilers (at the time of writing these are + Borland and GCC versions prior to 4.1) require inline placeholders for + precompiled headers, in which case this macro is defined by default. If you + are not using placeholders at all, you can disable them entirely by + defining the macro BOOST_BIND_NO_PLACEHOLDERS. Note that defining + the placeholder macros makes bind less compliant with the TR1 specification + and may cause compatibility problems.

    "__stdcall", "__cdecl", "__fastcall", and "pascal" Support

    Some platforms allow several types of (member) functions that differ by their calling convention (the rules by which the function is invoked: how are