링크 : http://tingcobell.tistory.com/295
인가 보구나 하고 나중에 봐야지 했었습니다.
먼저 boost::bind을 사용하는 목적은 container의 객체들을 사용하고 싶을 때, 함수 객체를 만들어주기 위해서
사용이 됩니다. bind는 임의의 함수, 함수 포인터, 함수 객체, 멤버 함수를 함수 객체로 만들수 있기 때문에,
원하는 값을 전달 시킬 수 있습니다.
링크 : http://www.boost.org
역시 문서가 너무나도 잘되어 있습니다. boost::bind 는 std::bind1st와 std::bin2nd 보다 일반화 한 내용입니다.
#include <boost/bind.hpp>
//#include <boost/signal.hpp>
#include <iostream>
int f(int, int);
struct X
{
int f(int);
}
int main()
{
//boost::bind(f, 1); // error, f takes two arguments
boost::bind(f, 1, 2); // OK
//boost::bind(&X::f, 1); // error, X::f takes two arguments
boost::bind(&X::f, _1, 1); // OK
}
int f( int a, int b)
{
return a + b;
}
#include <boost/bind.hpp>
#include <iostream>
int f(int a)
{
return a;
}
int main()
{
boost::bind(f, "incompatible"); // OK so far, no call
//boost::bind(f, "incompatible")(); // error, "incompatible" is not an int
boost::bind(f, _1); // OK
//boost::bind(f, _1)("incompatible"); // error, "incompatible" is not an int
}
#include <boost/bind.hpp>
#include <iostream>
int f(int a)
{
return a;
}
int main()
{
boost::bind(f, _1); // OK
//boost::bind(f, _1)(); // error, there is no argument number 1
int c = boost::bind(f, _1)( 1); // 성공
}
#include <boost/bind.hpp>
#include <iostream>
#include <boost/detail/lightweight_test.hpp>
struct X
{
short operator()(short &r) const { return ++r; }
};
int main()
{
short i(6);
BOOST_TEST( boost::bind<short>( X(), boost::ref(i))() == 7 );
std::cout << i << std::endl;
return 0;
}
공부를 하면 할 수록 너무나도 매력적인 라이브러리라는 것을 알 수 있습니다. 점점 더 빠져들게 됩니다.
'프로그램언어 > boost' 카테고리의 다른 글
[ Boost ] boost::asio Part1. (0) | 2011.05.13 |
---|---|
[ Boost ] boost::bind Part2 (0) | 2011.05.12 |
[ Boost ] Boost::thread #4 (0) | 2011.05.12 |
[ Boost ] Boost::thread #3 (1) | 2011.05.11 |
[ Boost ] Boost::thread #2 (0) | 2011.05.11 |