например, я могу сделать что-то вроде:
void foo(int i)
{
std::cout << "fo is called with: " << i << "\n";
}
int main()
{
std::function<void(int)> fo = std::bind(&foo, std::placeholders::_1);
fo(5);
}
и вывод
fo вызывается с: 5
теперь я 'Мне любопытно, смогу ли я создать std :: function, которая получит std :: function в качестве аргумента, поэтому я думаю о такой функции, как:
void foAndFo(function<void(int)> foo)
{
std::function<void(int)> fo = std::bind(&foo, std::placeholders::_1);
fo(5);
}
, но это даже не может быть скомпилировано.
Теперь я изменил на что-то, может вызвать указатель на функцию.
using foType = void(*)(int);
void foAndFo(foType foo)
{
std::function<void(int)> fo = std::bind(&foo, std::placeholders::_1);
fo(5);
}
Теперь это может быть скомпилировано. Но теперь я не могу std :: bind это как:
int main()
{
std::function<foType> fo2 = std::bind(&foAndFo,std::placeholders::_1); //error
}
это такможно использовать std :: function в качестве аргумента std :: function?