У меня проблема с lambdas в MSVC2010.C++ 0x lambda + boost :: function problem
Он успешно компилируется:
auto f1 = []() { };
boost::function<void()> a = f1;
Но это приносит C2440 ошибки:
auto f2 = []()
{
auto f3 = []() { };
boost::function<void()> b = f3;
};
Ошибка C2440:
'initializing' : cannot convert from 'int' to 'boost::function<Signature>'
with
[
Signature=void (void)
]
No constructor could take the source type, or constructor overload resolution was ambiguous
Почему? Работает ли он в GCC4.6?
Почему вы используете функцию boost :: вместо std :: function? –
Поскольку зависимые библиотеки моего проекта используют boost :: function. Работает ли он с std :: function? – dizel3d
Я протестировал ваш код с помощью vc10, но вместо этого использовал 'std :: function'. Он прекрасно компилируется. Итак, код с clang 3.2 и gcc 4.6.2. У меня нет загрузочных библиотек, поэтому я не могу комментировать вашу точную проблему. НТН! – dirkgently