如何把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说的是这个意思么?
- Assembly code
#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;}
[解决办法]
[解决办法]
gcc试了试,好像这跟寒暑对象只能在函数外部定义。
[解决办法]
[解决办法]
那就换个编程语言吧。
不要和c++标准对抗。
语法糖也没这么重要。