всех приветствую в исходниках STL функтор передается по значению
template<class _InIt,
class _Fn1> inline
_Fn1 for_each(_InIt _First, _InIt _Last, _Fn1 _Func)
{ // perform function for each element
for (; _ChkFirst != _ChkLast; ++_ChkFirst)
_Func(*_ChkFirst);
return (_Func);
}
можно исправить
_Func(*_ChkFirst); на (*_Func)(*_ChkFirst);
class type{
... buff[VERY_BIG_SIZE];
public:
type& operator*(){return *this;}
void operator()(... e){}
};
template<class _InIt,
class _Fn1> inline
_Fn1 for_each(_InIt _First, _InIt _Last, _Fn1 _Func)
{ // perform function for each element
for (; _ChkFirst != _ChkLast; ++_ChkFirst)
(*_Func)(*_ChkFirst);
return (_Func);
}
например
type obj; for_each(..., ..., &obj);
for_each(..., ...., obj);