Скажем, у меня есть функция,
bool my_func(bool input_val) { return !input_val; }
, и я хочу передать ее как функцию, которая возвращает void и ничего не берет, поэтому это будет что-то вроде:
bool the_truth = true;
void func_taking_a_void_func(std::function<void()> void_func) {};
func_taking_a_void_func([the_truth]() -> void { my_func(the_truth); });
Сначала я попытался использовать std::bind
, но, естественно, компилятор не смог использовать my_func
, поскольку он возвращал bool вместо void.
func_taking_a_void_func(std::bind(my_func, the_truth));
Возможно ли сделать что-то вроде std::bind_and_ignore_return_type
без просто обернуть вызов функции лямбда-выражением?Я использую C ++ 11 на VS2013, но все остальное тоже хорошо.