mirror of
https://github.com/boostorg/bind.git
synced 2026-04-15 06:06:06 +02:00
Compare commits
74 Commits
boost-1.54
...
boost-1.56
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1480db5679 | ||
|
|
f53694ef25 | ||
|
|
0afd49b884 | ||
|
|
dd67e3f785 | ||
|
|
c92a49d5c2 | ||
|
|
a6b17d9001 | ||
|
|
ea05f23163 | ||
|
|
fafb6bb650 | ||
|
|
f7e101e928 | ||
|
|
166c4b6be7 | ||
|
|
8414233b9c | ||
|
|
15d6d6ac95 | ||
|
|
ba117db120 | ||
|
|
f5c95610b6 | ||
|
|
ce0fc0f69a | ||
|
|
aa8a94273d | ||
|
|
92ff08b873 | ||
|
|
6315df35d6 | ||
|
|
96fd1e7036 | ||
|
|
7ff6524bd1 | ||
|
|
0f66412487 | ||
|
|
af136e483d | ||
|
|
5b2cf44de5 | ||
|
|
5e2fc717f0 | ||
|
|
9955139c65 | ||
|
|
da3580cc14 | ||
|
|
27003baf12 | ||
|
|
3d60d74ff0 | ||
|
|
f89c41dc7b | ||
|
|
7aa58cf653 | ||
|
|
1bf8cd6c7a | ||
|
|
e5d99ce085 | ||
|
|
17282c97c2 | ||
|
|
f02b090fe8 | ||
|
|
f3da835e0b | ||
|
|
73fc778b61 | ||
|
|
26ee2825fe | ||
|
|
dc1e4dbfae | ||
|
|
45a1f1434b | ||
|
|
bc50ab0ba3 | ||
|
|
010349ec9b | ||
|
|
8ae9e8460d | ||
|
|
5d49fb45d0 | ||
|
|
4000680b6a | ||
|
|
851903fcc4 | ||
|
|
1d79533df7 | ||
|
|
f09a7a5747 | ||
|
|
0b72bfbd9b | ||
|
|
61519fcae2 | ||
|
|
48c5a6e682 | ||
|
|
1b292ee487 | ||
|
|
0dd5dae4e8 | ||
|
|
203ca82ef2 | ||
|
|
037a4d1976 | ||
|
|
dfd3da2cc4 | ||
|
|
aef08dd0cd | ||
|
|
ef993c777a | ||
|
|
f58543ac11 | ||
|
|
f1afd17717 | ||
|
|
e73f08edee | ||
|
|
3c24cbedf6 | ||
|
|
79f8680eda | ||
|
|
e163aeb563 | ||
|
|
ce24d4f735 | ||
|
|
41d9fbc317 | ||
|
|
2f595f53f5 | ||
|
|
c746cf26de | ||
|
|
a695360c4f | ||
|
|
0aadd1805d | ||
|
|
0cc198acc2 | ||
|
|
b272145f3e | ||
|
|
bfe10df38a | ||
|
|
c69a4ad382 | ||
|
|
683d699e4a |
@@ -272,7 +272,7 @@ bind(&X::f, p, _1)(i); // (<i>internal copy of p</i>)->f(i)
|
||||
</p>
|
||||
<P>This feature of <b>bind</b> can be used to perform function composition. See <A href="bind_as_compose.cpp">
|
||||
bind_as_compose.cpp</A> for an example that demonstrates how to use <b>bind</b>
|
||||
to achieve similar functionality to <A href="../compose/index.htm">Boost.Compose</A>.
|
||||
to achieve similar functionality to <A href="http://www.boost.org/doc/libs/1_31_0/libs/compose/index.htm">Boost.Compose</A>.
|
||||
</P>
|
||||
<p>Note that the first argument - the bound function object - is not evaluated,
|
||||
even when it's a function object that is produced by <STRONG>bind</STRONG> or a
|
||||
@@ -390,7 +390,7 @@ void connect()
|
||||
<p>As a general rule, the function objects generated by <b>bind</b> take their
|
||||
arguments by reference and cannot, therefore, accept non-const temporaries or
|
||||
literal constants. This is an inherent limitation of the C++ language in its
|
||||
current (2003) incarnation, known as <A href="http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1385.htm">
|
||||
current (2003) incarnation, known as <A href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm">
|
||||
the forwarding problem</A>. (It will be fixed in the next standard, usually
|
||||
called C++0x.)</p>
|
||||
<p>The library uses signatures of the form
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/is_placeholder.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
@@ -33,8 +34,7 @@ template< int I > struct arg
|
||||
|
||||
template< class T > arg( T const & /* t */ )
|
||||
{
|
||||
// static assert I == is_placeholder<T>::value
|
||||
typedef char T_must_be_placeholder[ I == is_placeholder<T>::value? 1: -1 ];
|
||||
BOOST_STATIC_ASSERT( I == is_placeholder<T>::value );
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Boost: mem_fn.hpp documentation</title>
|
||||
@@ -146,7 +145,7 @@ void k(std::vector<boost::shared_ptr<X> > const & v)
|
||||
<p>
|
||||
Yes. For simple uses, <b>mem_fn</b> provides additional functionality that the
|
||||
standard adaptors do not. Complicated expressions that use <b>std::bind1st</b>, <b>std::bind2nd</b>
|
||||
or <a href="../compose/index.htm"><b>Boost.Compose</b></a> along with the
|
||||
or <a href="http://www.boost.org/doc/libs/1_31_0/libs/compose/index.htm"><b>Boost.Compose</b></a> along with the
|
||||
standard adaptors can be rewritten using <a href="bind.html"><b>boost::bind</b></a>
|
||||
that automatically takes advantage of <b>mem_fn</b>.
|
||||
</p>
|
||||
|
||||
@@ -33,6 +33,12 @@
|
||||
|
||||
struct X
|
||||
{
|
||||
// SGI-related compilers have odd compiler-synthesized ctors dtors
|
||||
#ifdef __PATHSCALE__
|
||||
X() {}
|
||||
~X() {}
|
||||
#endif
|
||||
|
||||
int operator()()
|
||||
{
|
||||
return 17041;
|
||||
|
||||
@@ -43,6 +43,11 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
// SGI-related compilers have odd compiler-synthesized ctors and dtors
|
||||
#ifdef __PATHSCALE__
|
||||
~X() {}
|
||||
#endif
|
||||
|
||||
int state() const
|
||||
{
|
||||
return state_;
|
||||
|
||||
@@ -39,128 +39,128 @@ struct X
|
||||
// 0
|
||||
|
||||
int mf0_1() { return 0; }
|
||||
int mf0_2() { return 0; }
|
||||
int mf0_2() { return 1; }
|
||||
|
||||
int cmf0_1() const { return 0; }
|
||||
int cmf0_2() const { return 0; }
|
||||
int cmf0_2() const { return 1; }
|
||||
|
||||
void mf0v_1() {}
|
||||
void mf0v_2() {}
|
||||
void mf0v_2() { static int x; ++x; }
|
||||
|
||||
void cmf0v_1() const {}
|
||||
void cmf0v_2() const {}
|
||||
void cmf0v_2() const { static int x; ++x; }
|
||||
|
||||
// 1
|
||||
|
||||
int mf1_1(int) { return 0; }
|
||||
int mf1_2(int) { return 0; }
|
||||
int mf1_2(int) { return 1; }
|
||||
|
||||
int cmf1_1(int) const { return 0; }
|
||||
int cmf1_2(int) const { return 0; }
|
||||
int cmf1_2(int) const { return 1; }
|
||||
|
||||
void mf1v_1(int) {}
|
||||
void mf1v_2(int) {}
|
||||
void mf1v_2(int) { static int x; ++x; }
|
||||
|
||||
void cmf1v_1(int) const {}
|
||||
void cmf1v_2(int) const {}
|
||||
void cmf1v_2(int) const { static int x; ++x; }
|
||||
|
||||
// 2
|
||||
|
||||
int mf2_1(int, int) { return 0; }
|
||||
int mf2_2(int, int) { return 0; }
|
||||
int mf2_2(int, int) { return 1; }
|
||||
|
||||
int cmf2_1(int, int) const { return 0; }
|
||||
int cmf2_2(int, int) const { return 0; }
|
||||
int cmf2_2(int, int) const { return 1; }
|
||||
|
||||
void mf2v_1(int, int) {}
|
||||
void mf2v_2(int, int) {}
|
||||
void mf2v_2(int, int) { static int x; ++x; }
|
||||
|
||||
void cmf2v_1(int, int) const {}
|
||||
void cmf2v_2(int, int) const {}
|
||||
void cmf2v_2(int, int) const { static int x; ++x; }
|
||||
|
||||
// 3
|
||||
|
||||
int mf3_1(int, int, int) { return 0; }
|
||||
int mf3_2(int, int, int) { return 0; }
|
||||
int mf3_2(int, int, int) { return 1; }
|
||||
|
||||
int cmf3_1(int, int, int) const { return 0; }
|
||||
int cmf3_2(int, int, int) const { return 0; }
|
||||
int cmf3_2(int, int, int) const { return 1; }
|
||||
|
||||
void mf3v_1(int, int, int) {}
|
||||
void mf3v_2(int, int, int) {}
|
||||
void mf3v_2(int, int, int) { static int x; ++x; }
|
||||
|
||||
void cmf3v_1(int, int, int) const {}
|
||||
void cmf3v_2(int, int, int) const {}
|
||||
void cmf3v_2(int, int, int) const { static int x; ++x; }
|
||||
|
||||
// 4
|
||||
|
||||
int mf4_1(int, int, int, int) { return 0; }
|
||||
int mf4_2(int, int, int, int) { return 0; }
|
||||
int mf4_2(int, int, int, int) { return 1; }
|
||||
|
||||
int cmf4_1(int, int, int, int) const { return 0; }
|
||||
int cmf4_2(int, int, int, int) const { return 0; }
|
||||
int cmf4_2(int, int, int, int) const { return 1; }
|
||||
|
||||
void mf4v_1(int, int, int, int) {}
|
||||
void mf4v_2(int, int, int, int) {}
|
||||
void mf4v_2(int, int, int, int) { static int x; ++x; }
|
||||
|
||||
void cmf4v_1(int, int, int, int) const {}
|
||||
void cmf4v_2(int, int, int, int) const {}
|
||||
void cmf4v_2(int, int, int, int) const { static int x; ++x; }
|
||||
|
||||
// 5
|
||||
|
||||
int mf5_1(int, int, int, int, int) { return 0; }
|
||||
int mf5_2(int, int, int, int, int) { return 0; }
|
||||
int mf5_2(int, int, int, int, int) { return 1; }
|
||||
|
||||
int cmf5_1(int, int, int, int, int) const { return 0; }
|
||||
int cmf5_2(int, int, int, int, int) const { return 0; }
|
||||
int cmf5_2(int, int, int, int, int) const { return 1; }
|
||||
|
||||
void mf5v_1(int, int, int, int, int) {}
|
||||
void mf5v_2(int, int, int, int, int) {}
|
||||
void mf5v_2(int, int, int, int, int) { static int x; ++x; }
|
||||
|
||||
void cmf5v_1(int, int, int, int, int) const {}
|
||||
void cmf5v_2(int, int, int, int, int) const {}
|
||||
void cmf5v_2(int, int, int, int, int) const { static int x; ++x; }
|
||||
|
||||
// 6
|
||||
|
||||
int mf6_1(int, int, int, int, int, int) { return 0; }
|
||||
int mf6_2(int, int, int, int, int, int) { return 0; }
|
||||
int mf6_2(int, int, int, int, int, int) { return 1; }
|
||||
|
||||
int cmf6_1(int, int, int, int, int, int) const { return 0; }
|
||||
int cmf6_2(int, int, int, int, int, int) const { return 0; }
|
||||
int cmf6_2(int, int, int, int, int, int) const { return 1; }
|
||||
|
||||
void mf6v_1(int, int, int, int, int, int) {}
|
||||
void mf6v_2(int, int, int, int, int, int) {}
|
||||
void mf6v_2(int, int, int, int, int, int) { static int x; ++x; }
|
||||
|
||||
void cmf6v_1(int, int, int, int, int, int) const {}
|
||||
void cmf6v_2(int, int, int, int, int, int) const {}
|
||||
void cmf6v_2(int, int, int, int, int, int) const { static int x; ++x; }
|
||||
|
||||
// 7
|
||||
|
||||
int mf7_1(int, int, int, int, int, int, int) { return 0; }
|
||||
int mf7_2(int, int, int, int, int, int, int) { return 0; }
|
||||
int mf7_2(int, int, int, int, int, int, int) { return 1; }
|
||||
|
||||
int cmf7_1(int, int, int, int, int, int, int) const { return 0; }
|
||||
int cmf7_2(int, int, int, int, int, int, int) const { return 0; }
|
||||
int cmf7_2(int, int, int, int, int, int, int) const { return 1; }
|
||||
|
||||
void mf7v_1(int, int, int, int, int, int, int) {}
|
||||
void mf7v_2(int, int, int, int, int, int, int) {}
|
||||
void mf7v_2(int, int, int, int, int, int, int) { static int x; ++x; }
|
||||
|
||||
void cmf7v_1(int, int, int, int, int, int, int) const {}
|
||||
void cmf7v_2(int, int, int, int, int, int, int) const {}
|
||||
void cmf7v_2(int, int, int, int, int, int, int) const { static int x; ++x; }
|
||||
|
||||
// 8
|
||||
|
||||
int mf8_1(int, int, int, int, int, int, int, int) { return 0; }
|
||||
int mf8_2(int, int, int, int, int, int, int, int) { return 0; }
|
||||
int mf8_2(int, int, int, int, int, int, int, int) { return 1; }
|
||||
|
||||
int cmf8_1(int, int, int, int, int, int, int, int) const { return 0; }
|
||||
int cmf8_2(int, int, int, int, int, int, int, int) const { return 0; }
|
||||
int cmf8_2(int, int, int, int, int, int, int, int) const { return 1; }
|
||||
|
||||
void mf8v_1(int, int, int, int, int, int, int, int) {}
|
||||
void mf8v_2(int, int, int, int, int, int, int, int) {}
|
||||
void mf8v_2(int, int, int, int, int, int, int, int) { static int x; ++x; }
|
||||
|
||||
void cmf8v_1(int, int, int, int, int, int, int, int) const {}
|
||||
void cmf8v_2(int, int, int, int, int, int, int, int) const {}
|
||||
void cmf8v_2(int, int, int, int, int, int, int, int) const { static int x; ++x; }
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user