gpt4 book ai didi

c++ - 为什么有一个本地仿函数不好?

转载 作者:可可西里 更新时间:2023-11-01 18:09:43 26 4
gpt4 key购买 nike

例如,如果谓词只使用一次,那么在 main 函数中声明类 doubler 有什么问题?

#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 标准的编译器,那么它没有任何问题,但您可能应该避免这样做,以最大限度地提高交叉编译器的兼容性。

关于c++ - 为什么有一个本地仿函数不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4582978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com