2
0
mirror of https://github.com/boostorg/lambda.git synced 2026-01-31 08:12:26 +00:00

Avoid ambiguities between boost::lambda::bind and std::bind with VC10. Fixes #3075

[SVN r53233]
This commit is contained in:
Steven Watanabe
2009-05-24 22:58:52 +00:00
parent 04ae944c3c
commit 6985fca6ee
4 changed files with 9 additions and 11 deletions

View File

@@ -27,7 +27,8 @@
#include <algorithm>
using namespace boost::lambda;
using namespace boost::lambda;
namespace bl = boost::lambda;
int sum_0() { return 0; }
int sum_1(int a) { return a; }
@@ -91,7 +92,7 @@ int call_with_100(const F& f) {
// This would result in;
// bind(_1 + 1, _1)(make_const(100)) , which would be a compile time error
return bind(unlambda(f), _1)(make_const(100));
return bl::bind(unlambda(f), _1)(make_const(100));
// for other functors than lambda functors, unlambda has no effect
// (except for making them const)
@@ -116,11 +117,11 @@ void test_unlambda() {
BOOST_CHECK(call_with_101(_1 + 1) == 102);
BOOST_CHECK(call_with_100(bind(std_functor(std::bind1st(std::plus<int>(), 1)), _1)) == 101);
BOOST_CHECK(call_with_100(bl::bind(std_functor(std::bind1st(std::plus<int>(), 1)), _1)) == 101);
// std_functor insturcts LL that the functor defines a result_type typedef
// rather than a sig template.
bind(std_functor(std::plus<int>()), _1, _2)(i, i);
bl::bind(std_functor(std::plus<int>()), _1, _2)(i, i);
}

View File

@@ -18,9 +18,7 @@
#include <iostream>
using namespace std;
using namespace boost::lambda;
using namespace boost::lambda;
int sum_of_args_0() { return 0; }

View File

@@ -18,9 +18,7 @@
#include <iostream>
using namespace std;
using namespace boost::lambda;
using namespace boost::lambda;
int sum_of_args_0() { return 0; }

View File

@@ -29,6 +29,7 @@
#endif
using namespace boost::lambda;
namespace bl = boost::lambda;
template<class T>
bool check_tuple(int n, const T& t)
@@ -248,7 +249,7 @@ void delayed_construction()
std::vector<std::pair<int, int> > v;
std::transform(x.begin(), x.end(), y.begin(), std::back_inserter(v),
bind(constructor<std::pair<int, int> >(), _1, _2) );
bl::bind(constructor<std::pair<int, int> >(), _1, _2) );
}
int test_main(int, char *[]) {