Я пытаюсь передать 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 с дополнительным аргументом, также являющимся вызовом bind.
dispatch->deliver( bind( &Object::method1, X1, bind( &Object::method1, X2 ) );
ошибка: / usr / include / c ++ / v1 / functions: 1539: 13: ошибка: нет соответствующей функции для вызова '__mu_expand', возврата __mu_expand (__ti, __uj, __indices ());