#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <functional>
#include <deque>
using namespace std;
#include <tr1/functional>
using namespace std::tr1::placeholders;
template<class Function_t>
void for_each_x(Function_t func,int interval)
{
for(int sc = 0; sc < 10; sc+=interval){
func((const int)sc);
}
}
void foo(int x,const int y)
{
}
int main(int argc, char *argv[])
{
for_each_x(tr1::bind(tr1::function<void(int,const int)>(foo),_1,11),2);
return 0;
}
gcc 4.2.2 或 4.4.1 给出了很长的错误信息。如果我将“const int”更改为“int”,则不会出现错误消息。但是我真的很喜欢使用“const int”来确保如果函数的参数通过引用传递,计数器变量不会意外更改。