Я пытаюсь передать лямбду в параметр в функции Maybe (), которая работает странно.Код ниже:
template<typename R, typename F>
void maybe(R& result, F& lambda) {
if (0 == result) {
result = lambda();
}
}
auto l = [&]() {
return adi_uart_Open(deviceNum, ADI_UART_DIR_BIDIRECTION, &memory, ADI_UART_BIDIR_DMA_MEMORY_SIZE, &handle);
};
Если я позвоню
maybe(result, l);
, то все работает просто отлично.Однако, если я помещаю лямбу непосредственно в функцию, например:
maybe(result, [&](){return adi_uart_Open(deviceNum, ADI_UART_DIR_BIDIRECTION, &memory, ADI_UART_BIDIR_DMA_MEMORY_SIZE, &handle);});
, тогда я получаю следующую ошибку:
ошибка: ни один экземпляр шаблона функции «может» не совпадаетсписок аргументов
Я бы использовал std :: function вместо шаблонов, но он недоступен на встроенном устройстве, над которым я работаю.