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

Meaning of constructor with multiple pairs of parentheses

本文关键字:构造函数      更新时间:2023-10-16

我不确定这段代码:

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

我相信,someClass 的构造函数引用函数列表,每个函数都将返回void并引用 someType 向量。我不确定的是最后一对括号,(const std::vector<someType>&).std::list在这里超载operator()吗?

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

谢谢。

它本身就是一个函数。

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

这是对函数的引用,该函数将对 someType 的 const std::vector的引用作为参数,并返回对 someType std::vector的引用并返回voidstd::function 列表。

使用示例:

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

构造函数的参数

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

是对具有返回类型 std::list<std::function<void(std::vector<someType>&)>> 和一个类型为 const std::vector<someType>& 的参数的函数的引用