我试图将函数<>对象作为另一个方法的参数传递,以便灵活地从列表中获取元素.这是我的代码:
libusb_device * UsbKeyboard::GetSpecifiedDevice(function<bool(libusb_device *)> pred)
{
if (_usbDevices == nullptr) return nullptr;
int i = 0;
libusb_device *dev = nullptr;
while ((dev = _usbDevices[i++]) != NULL)
{
if (pred(dev))
return dev;
}
return nullptr;
}
libusb_device * UsbKeyboard::GetHidDevice()
{
function<libusb_device *> pred = [&](libusb_device *dev) -> bool {
struct libusb_device_descriptor desc;
int r = libusb_get_device_descriptor(dev, &desc);
if (r >= 0)
return desc.bDeviceClass == LIBUSB_CLASS_HID;
};
return GetSpecifiedDevice(pred);
}
Run Code Online (Sandbox Code Playgroud)
编译错误位于此代码的第一行:
error C2027: use of undefined type 'std::_Get_function_impl<_Fty>'
1> with
1> …Run Code Online (Sandbox Code Playgroud)