例如,如果谓词仅使用一次,那么在主函数中声明类加倍器有什么问题?
#include <list>
#include <algorithm>
#define SIZE 10
int main()
{
std::list<int> myList;
for(int i=0; i<SIZE ;++i)
{
myList.push_back(i);
}
class doubler
{
public:
doubler(){}
int operator()(int a)
{
return a + a;
}
} pred;
std::for_each(myList.begin(), myList.end(), pred);
return 0;
}
此设置的问题在于,至少在 C++03 中,您不能使用本地函子作为模板参数,因为它没有外部链接。这意味着从技术上来说,上面的代码是不合法的。然而,他们正在 C++0x 中修复这个问题,因为这是一个非常愚蠢的限制,而且由于 VS2010 具有基本的 C++0x 支持,所以上面的代码完全没问题。
简而言之,您的问题的答案是,如果您使用符合 C++0x 的编译器,则没有任何问题,但否则您应该避免这样做,以最大限度地提高交叉编译器兼容性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)