Giriş
Şu satırı dahil ederiz.
for_each metodu
Şöyle yaparız.
Şöyle yaparız.
lambda üretir.
Örnek
Şöyle yaparız.
Şöyle yaparız
Şu satırı dahil ederiz.
#include <boost/phoenix.hpp>
Kolay kullanım için şu satırları dahil ederiz.namespace phx = boost::phoenix;
using boost::phoenix::placeholders::arg1;
using boost::phoenix::local_names::_a;
std::place_holders::_1, _2 yerine boost::phoenix::arg_names::arg1, arg2 kullanılır.for_each metodu
Şöyle yaparız.
std::vector<int> const small_ints {1, 2, 3, 4, 5};
std::vector<int> const big_ints {11, 12, 13, 14, 15};
namespace phx = boost::phoenix;
using boost::phoenix::placeholders::arg1;
using boost::phoenix::local_names::_a;
std::vector<int>::const_iterator big_ints_it;
std::for_each(small_ints.cbegin(), small_ints.cend(),
phx::for_each(phx::cref(big_ints),phx::lambda(...)[...])
);
function SınıfıŞöyle yaparız.
struct MyType {
MyType()
: complete_(complete_f { this })
{ }
void doSomething() { }
private:
struct complete_f {
MyType* _this;
void operator()() const {
// do something with _this, e.g
this->doSomething();
}
};
boost::phoenix::function<complete_f> complete_;
};
ref metodulambda üretir.
Örnek
Şöyle yaparız.
namespace phx = boost::phoenix;
boost::mutex mx;
boost::condition_variable cv;
boost::unique_lock<boost::mutex> lk(mx);
cv.wait(lk, phx::ref(m_queue_size) > 0);
ÖrnekŞöyle yaparız
using boost::phoenix::placeholders::arg1;
using boost::phoenix::local_names::_a;
phx::lambda(_a=arg1)[phx::ref(std::cout) << '(' << _a << ", " << arg1 << "), "]
Hiç yorum yok:
Yorum Gönder