多对括号构造函数的含义

Meaning of constructor with multiple pairs of parentheses

我不确定这段代码:

someClass(std::list<std::function<void(std::vector<someType>&)>>(&)(const std::vector<someType>&)) {
    ...
}

我相信 someClass 的构造函数引用了一个函数列表,每个函数都将 return void 并引用 someType。 我不确定的是最后一对括号 (const std::vector<someType>&)std::listoperator() 是否在这里超载?

此外,我想将参数命名为std::list,但是我最初猜测的someClass(std::list<...>(& nameOfList)(...)) 没有成功,因为我无法访问nameOfList.begin(),例如。我会在这里做什么?

谢谢。

构造函数的参数

someClass( std::list<std::function<void(std::vector<someType>&)>>(&)(const std::vector<someType>&)) {

是对具有 return 类型 std::list<std::function<void(std::vector<someType>&)>> 和一个 const std::vector<someType>&

类型参数的函数的引用

它本身就是一个函数。

std::list<
         std::function<
            void(std::vector<someType>&)
         >
> (&)(const std::vector<someType>&)

这是对函数的引用,该函数将对 someType 的 const std::vector 的引用和 returns 的 std::functions 列表作为参数引用 someType 和 return void.

std::vector

用法示例:

#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);
    }
}