jmk*_*aer 8 c++ constructor declaration function
我不确定这段代码:
someClass(std::list<std::function<void(std::vector<someType>&)>>(&)(const std::vector<someType>&)) {
...
}
Run Code Online (Sandbox Code Playgroud)
someClass我相信的构造函数会引用函数列表,每个函数都将返回void并引用向量someType。我不确定的是最后一对括号(const std::vector<someType>&)。是operator()的std::list这里过载?
另外,我想命名该std::list参数,但是someClass(std::list<...>(& nameOfList)(...))由于无法访问nameOfList.begin(),例如,我最初的猜测没有用。我要在这里做什么?
谢谢。
构造函数的参数
someClass( std::list<std::function<void(std::vector<someType>&)>>(&)(const std::vector<someType>&)) {
Run Code Online (Sandbox Code Playgroud)
是对具有返回类型std::list<std::function<void(std::vector<someType>&)>>和该类型的一个参数的函数的引用const std::vector<someType>&
它本身就是一个功能。
std::list<
std::function<
void(std::vector<someType>&)
>
> (&)(const std::vector<someType>&)
Run Code Online (Sandbox Code Playgroud)
这是该带一个参数为const引用函数的引用std::vector的someType,并返回一个列表std::function是采取一个一个的Reference std::vector的someType和返回void。
用法示例:
#include <vector>
#include <list>
#include <functional>
class someType {};
void func(std::list<std::function<void(std::vector<someType>&)>> (& par)(const std::vector<someType>&)) {
// some input
const std::vector<someType> input;
// the function returns the list
std::list<std::function<void(std::vector<someType>&)>> res = par(input);
// we can iterate over the list
for (auto & i : res) {
std::vector<someType> other;
// and call the functions inside
i(other);
}
}
Run Code Online (Sandbox Code Playgroud)