#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」が本当に好きです。