带有多对括号的构造函数的含义

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(),例如,我最初的猜测没有用。我要在这里做什么?

谢谢。

Vla*_*cow 6

构造函数的参数

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>&

  • @jmkjaer不要打扰。要开心。:) (4认同)

Kam*_*Cuk 6

它本身就是一个功能。

std::list<
         std::function<
            void(std::vector<someType>&)
         >
> (&)(const std::vector<someType>&)
Run Code Online (Sandbox Code Playgroud)

这是该带一个参数为const引用函数的引用std::vectorsomeType,并返回一个列表std::function是采取一个一个的Reference std::vectorsomeType和返回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)