Я пытаюсь передать std :: function с помощью такого метода:
class dispatch
{
public:
deliver( std::function<void ( void )> task );
}
Это работает, как ожидалось. Однако я хочу передать аргументы некоторым методам, предоставленным в качестве задачи, но предпочел бы не создавать перегрузки для всех различных форм функции <...>.
например, возможно ли вообще просто создать метод, подобный следующему
deliver( std::function& task );
, и просто вызвать его с помощью
dispatch->deliver( bind( &Object::method, X ) );
или
dispatch->deliver( bind( &Object::method, X, arg1, arg2 ) );
и т. Д.
Спасибо за ввод всех. Похоже, моя настоящая ошибка связана с вызовами dispatch-> delivery с дополнительным аргументом, также являющимся вызовом привязки.
dispatch->deliver( bind( &Object::method1, X1, bind( &Object::method1, X2 ) );
ошибка: / usr / include / c ++ / v1 / function: 1539: 13: ошибка: нет соответствующей функции для вызова '__mu_expand' return __mu_expand (__ ti, __uj, __indices ());