英文原文:How the Boost Bind Library Can Improve Your C++ Programs
template <typename R, typename T, typename Arg>
simple_bind_t<R,T,Arg> simple_bind(
R (T::*fn)(Arg),
const T& t,
const placeholder&) {
return simple_bind_t<R,T,Arg>(fn,t);
}template <typename R,typename T, typename Arg>
class simple_bind_t {
typedef R (T::*fn)(Arg);
fn fn_;
T t_;
public:
simple_bind_t(fn f,const T& t):fn_(f),t_(t) {}
R operator()(Arg& a) {
return (t_.*fn_)(a);
}
};namespace {
class placeholder {};
placeholder _1;
}class Test {
public:
void do_stuff(const std::vector<int>& v) {
std::copy(v.begin(),v.end(),
std::ostream_iterator<int>(std::cout," "));
}
};
int main() {
Test t;
std::vector<int> vec;
vec.push_back(42);
simple_bind(&Test::do_stuff,t,_1)(vec);
}#include <vector>
#include <algorithm>
#include <iterator>
#include <iostream>
namespace {
class placeholder {};
placeholder _1;
}
template <typename R,typename T, typename Arg>
class simple_bind_t {
typedef R (T::*fn)(Arg);
fn fn_;
T t_;
public:
simple_bind_t(fn f,const T& t):fn_(f),t_(t) {}
R operator()(Arg& a) {
return (t_.*fn_)(a);
}
};
template <typename R, typename T, typename Arg>
simple_bind_t<R,T,Arg> simple_bind(
R (T::*fn)(Arg),
const T& t,
const placeholder&) {
return simple_bind_t<R,T,Arg>(fn,t);
}
class Test {
public:
void do_stuff(const std::vector<int>& v) {
std::copy(v.begin(),v.end(),
std::ostream_iterator<int>(std::cout," "));
}
};
int main() {
Test t;
std::vector<int> vec;
vec.push_back(42);
simple_bind(&Test::do_stuff,t,_1)(vec);
}Tomcat 8(六)catalina.bat详解,布布扣,bubuko.com
原文:http://blog.csdn.net/flyliuweisky547/article/details/22753383