Re: Pointer to function and lambda
От: Erop Россия  
Дата: 06.05.16 21:50
Оценка: 4 (1) +1
Здравствуйте, nen777w, Вы писали:

N>Баг или фитча?


Фича, конечно, если у тебя только голый указатель на функцию, то де ты собираешься хранить захваченные переменные?
Для хранения замыкания объект какой-то, однако нужен...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Pointer to function and lambda
От: T4r4sB Россия  
Дата: 06.05.16 21:19
Оценка: +1
Здравствуйте, nen777w, Вы писали:

N>Баг или фитча?


Как ты указатель на лямбду (напоминаю — это структура, для которой ещё есть оператор, сигнатура которого отличается от сигнатуры лямбды на неявный первый член) собираешься конвертить в указатель на функцию?

Пиши так:
template <typename Foonktar>
void foo(Foonktar&& pfn)
{

}
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Pointer to function and lambda
От: nen777w  
Дата: 06.05.16 21:14
Оценка:
Получаю ошибку компиляции на MSVC 2015 вот на таком коде:
void foo(bool(*pfn)(unsigned char))
{

}


void doo()
{
    int n;
    foo([n](unsigned char) -> bool { return true; }); <<--void foo(bool (__cdecl *)(unsigned char))': cannot convert argument 1 from 'doo::<lambda_60869cb642d5ef53784474e34a10f953>

    foo([](unsigned char) -> bool { return true; }); <<--если ничего не захватывать то все ок

}


Баг или фитча?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.