多对括号构造函数的含义
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::list
的 operator()
是否在这里超载?
此外,我想将参数命名为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::function
s 列表作为参数引用 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);
}
}
我不确定这段代码:
someClass(std::list<std::function<void(std::vector<someType>&)>>(&)(const std::vector<someType>&)) {
...
}
我相信 someClass
的构造函数引用了一个函数列表,每个函数都将 return void
并引用 someType
。
我不确定的是最后一对括号 (const std::vector<someType>&)
。 std::list
的 operator()
是否在这里超载?
此外,我想将参数命名为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::function
s 列表作为参数引用 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);
}
}