class Example {
//...
static auto make = []() -> std::shared_ptr<receiveObject> {
return std::make_shared<receiveObject>(Params::EchoBufferSize);
};
static auto recycle = [](std::shared_ptr<receiveObject> o) {
//nothing for now
};
recycle::shared_pool<receiveObject> receivePool(make, recycler);
};
Но я получаю
In file included from /home/project/AIPTCPClient.cpp:57:0:
/home/project/AIPTCPClient.h:312:57: error: 'make' is not a type
recycle::shared_pool<receiveObject> receivePool(make, recycler);
^~~~
/home/project/AIPTCPClient.h:312:63: error: 'recycler' is not a type
recycle::shared_pool<receiveObject> receivePool(make, recycler);
^~~~~~~~
Как вы можете видеть в shared_pool , для этого требуются две функции, поэтому я передаю свои лямбды. Но С ++ жалуются, что они должны быть типами. Я не понимаю Зачем конструктору нужен тип вместо объекта?