読者です 読者をやめる 読者になる 読者になる

boost::functionに関数オブジェクトの参照を持たせる

C++

まだリリースされていないですが、Boost 1.47.0のリリースノートにこんなのがあったのでBoostの最新ソースで試してみました:

boost::functionに、関数の参照を持たせるためにboost::refでラップして渡すとコンパイルエラーになる問題を修正(#4325)。

#include <iostream>
#include <boost/function.hpp>
#include <boost/ref.hpp>

struct functor {
    int value;
        
    functor()
        : value(0) {}
        
    void operator()()
    {
        ++value;
    }
};

int main()
{
    functor func;

    boost::function<void()> f = boost::ref(func);

    for (int i = 0; i < 10; ++i) {
        f();
    }
        
    std::cout << func.value << std::endl;
}
10

できました!
しかし今のところ使い道は思いつきません。