将模板函数分配给 boost::function

Assign a template function to boost::function

本文关键字:boost function 分配 函数      更新时间:2023-10-16

我想做一些类似这个玩具程序的事情:

#include <boost/function.hpp>
#include <iostream>
template <typename T>
void func1(T& g) {
    std::cout << 1;
}
template <typename T>
void func2(T& g) {
    std::cout << 2;
}
int main() {
    boost::function<void(int)> f;
    int k;
    std::cin >> k;
    if (k == 1)
        f = func1 < int > ;
    else
        f = func2 < int > ;
}

但是这段代码不起作用,它说"operator="不清楚。有什么方法可以做这样的事情吗?

更改以下内容:

boost::function<void(int)> f;

对此:

boost::function<void(int&)> f;

以便它与您的功能匹配。


在其他新闻中,C++11标准基本上采用boost::function作为std::function,标题<functional>