2

boost::bind または boost lambda ライブラリを使用して、引数を無視し、常に定数を返すファンクタを作成できますか?

たとえば、次と同等の動作を持つファンクタ:

int returnThree( SomeType arg ) { return 3; }
4

2 に答える 2

2

はい、使ってください

boost::phoenix::val(3);

Coliruでライブを見る

#include <boost/phoenix.hpp>

namespace p = boost::phoenix;
using namespace p::arg_names;

int main()
{
    auto p = p::val(42);
    return p() + p(/*ignored:*/77);
}

これは終了84コードとして返されます。

于 2014-10-28T15:09:33.820 に答える
1

seheの回答に対するBarryのコメントから:

#include "boost/lambda/lambda.hpp"

...

auto returnThree = boost::lambda::constant(3);
于 2014-10-28T15:45:15.310 に答える