std :: function作为std :: function的参数

时间:2019-02-22 12:37:57

标签: c++11 std-function

例如,我可以做类似的事情:

def treeMapData
node {
    stage ('Build') {
        try {
            treeMapData = git(branch: branchName, credentialsId: credential, url: "${gitLabServer}/${projectName}/${repo}.git")
            echo treeMapData["GIT_COMMIT"]
        } catch (Exception e) {
            echo "${e}"
        }
    }
}

并输出

  调用

fo的方式是:5

现在我很好奇我能否使一个std :: function接受一个std :: function作为参数,所以我想到了一些像这样的函数:

void foo(int i)
{
    std::cout << "fo is called with: " << i << "\n";
}

int main()
{
    std::function<void(int)> fo = std::bind(&foo, std::placeholders::_1);
    fo(5);
}

但是它甚至不能被编译。

现在我更改为可以调用函数指针的内容。

void foAndFo(function<void(int)> foo)
{
    std::function<void(int)> fo = std::bind(&foo, std::placeholders::_1);
    fo(5);
}

现在可以编译了。但是现在我无法将std :: bind像这样:

using foType = void(*)(int);
void foAndFo(foType foo)
{
    std::function<void(int)> fo = std::bind(&foo, std::placeholders::_1);
    fo(5);
}

是否可以将std :: function用作std :: function的参数?

0 个答案:

没有答案