为boost :: function分配模板函数

时间:2015-03-14 03:12:29

标签: c++ boost function-templates

我想做这样的玩具程序:

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

但是这段代码不起作用,并且它表示&#34;运算符=&#34;不清楚。我有什么方法可以做这样的事吗?

1 个答案:

答案 0 :(得分:0)

改变这个:

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

到此:

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

这样它就与你的功能相匹配。


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