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

时间:2019-06-01 11:48:17

标签: c++ function constructor declaration

我不确定这段代码:

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

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

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

谢谢。

2 个答案:

答案 0 :(得分:6)

构造函数的参数

> jsonschema = require 'jsonschema'
> dkjson = require('dkjson')
> schema = [[
>> { "type" : "object",
>> "properties" : {
>> "foo" : { "type" : "string" },
>> "bar" : { "type" : "number" }}}
>> ]]
> s = dkjson.decode(schema)
> myvalidator = jsonschema.generate_validator(s)
>
> json = '{ "foo": "bar", "bar": 42 }'
> print(myvalidator(json))
false   wrong type: expected object, got string
> print(myvalidator(dkjson.decode(json)))
true

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

答案 1 :(得分:6)

它本身就是一个功能。

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

这是对函数的引用,该函数以对std::vector的const someType的引用作为参数,并返回std::function的列表,其中引用了{{1 }},共std::vector,然后返回someType

用法示例:

void