如何把std::for_each用的函数对象,一起写在函数内部?
如题,以下代码是为了把相关代码写在一起,但编译时报错:
error C2918: 'XXX::MY_FUNC' : illegal use of local type in template instantiation
看MSDN说是:在模板实例化中非法使用局部类型,无法基于局部类型生成模板函数(即来自函数模板的函数)。用于实例化模板的类型必须有外部链接。
vector<MY_ITEM> vi;
struct MY_FUNC
{
public:
void operator() (MY_ITEM& elem)
{
}
};
for_each(vi.begin(), vi.end(), MY_FUNC());
但之前看到过代码是把函数对象写在函数内部,忘了是怎么实现的,是否有朋友知道?谢了!
[解决办法]
lz说的是这个意思么?
#include <iostream>#include <vector>using namespace std;template<typename T>struct MY_FUNC{ public: void operator() (typename T::value_type & elem) { }};int main(){ vector<int> vec; for_each(vec.begin(), vec.end(), MY_FUNC<vector<int> >()); return 0;}
[解决办法]