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 26 Apr 2007 22:36:47 -0000 @@ -25,7 +25,7 @@ namespace { -#if defined(__BORLANDC__) || defined(__GNUC__) +#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: 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 26 Apr 2007 22:37:22 -0000 @@ -76,7 +76,7 @@
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 implemented as objects + with internal linkage by default. 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>. Note that inline placeholders may be necessary on + some compilers when using non-standard features such as precompiled headers. + 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.
Some platforms allow several types of (member) functions that differ by their calling convention (the rules by which the function is invoked: how are