Как мне создать простую функцию boost :: lambda? - PullRequest
2 голосов
/ 13 января 2010

Я пытаюсь создать простую функцию, которая выполняет простой тест и возвращает значение true или false.

myfunct = (_3 < someArray[i]);

Когда я делаю это, я получаю эту ошибку:

error: no match for 'operator<' in '<unnamed>::_1 < depths[i]'

Я надеюсь получить что-то эквивалентное этому

bool myFunct(unsigned int a, unsigned int b, unsigned int c, unsigned int d)
{
   return c < 22; // Suppose 22 was in someArray[i]
}

Ответы [ 2 ]

3 голосов
/ 13 января 2010

Вы уверены, что правильно поняли пространства имен?

Это должно быть либо

using namespace boost::lambda;

или

boost::lambda::_1

Помните, что заполнители используются в других частях boost или в других библиотеках (может возникнуть конфликт с локальным TR1!), Что может вызвать ошибки.

2 голосов
/ 13 января 2010

Следующие компиляции без каких-либо ошибок, как выглядит весь ваш код?

#include <boost/function.hpp>
#include <boost/lambda/lambda.hpp>

using namespace boost;
using namespace boost::lambda;

int main(void)
{
    int someArray[5];
    int i;
    function<bool(int,int)> f = (_1 < someArray[i]);
}
...