Lambda и bind не работают вместе в VS2010 - PullRequest
3 голосов
/ 21 февраля 2011

Этот код не компилируется под VS2010:

#include <functional>

using namespace std;

void test()
{
    auto f = [] (int) {};
    bind(f, 10);
}

Это дает длинную ошибку, указывающую на внутреннюю часть реализации bind. Если я переключаюсь на нормальную функцию вместо лямбды, bind работает нормально, поэтому я считаю, что это ошибка в VS2010, но, возможно, я что-то упустил. Вы можете мне помочь?

1 Ответ

4 голосов
/ 21 февраля 2011

Кажется, VC10 не может справиться с лямбдами в качестве аргументов std::bind. Кажется, ожидается либо указатель на функцию, либо функциональный объект. Я не знаю, является ли это ошибкой, но я подозреваю, что это так, поскольку лямбда-функция должна стать функциональным объектом во время компиляции.

Во всяком случае, если вам нужен обходной путь, это компилирует для меня:

std::function<void(int)> func = [] (int) {};
std::bind(func, 10);
...