Что возвращает boost::bind?

257
26 июня 2022, 06:40

Какого типа данных возвращаемое значение boost::bind? Я хочу сделать функцию, которая будет принимать в себя результат работы boost::bind, но я не знаю какого типа значения он возвращает.

void work(int num){
   std::cout << num << std::endl;
}
int main(){
   auto test = boost::bind(work, 5);
}
Answer 1

boost::bind сущность шаблонная, и возвращаемый ею тип может (и будет) зависеть от типов передаваемых аргументов. Однако, если же вы хотите привязаться к определённому варианту, то на помощь приходит decltype. Пример:

#include <iostream>
#include <boost/bind/bind.hpp>
void work(int num){
   std::cout << num << std::endl;
}
void f(decltype(boost::bind(work,int())) arg) {
    arg();
}
int main() {
    auto test = boost::bind(work, 10);
    f(test);
}

Я специально указал int() в f, чтобы показать, что зависимость именно от типа, а не от значения.

При этом самая идея того, что нужно опираться на результирующий тип boost::bind кажется мне сомнительной.

READ ALSO
Не могу создать cookie на сайте, slim 3

Не могу создать cookie на сайте, slim 3

Нужно создать файлы cookie на сайте, я использую slim 3 и cookie создаётся в контроллереЯ уже пробовал создавать так:

284
value input type=&quot;file&quot; laravel 7.0

value input type="file" laravel 7.0

Суть такова - есть url Route::get('news/{id}/edit', 'newsController@edit')->name('edit'); В его view что то подобное:

180