【发布时间】:2019-02-25 18:42:33
【问题描述】:
我有一个问题:下面这段代码是否有效以及它是否最适合 C++14 中的序列生成器函数?
auto sequenceGen = [](int&& init) {
int counter = init;
return [counter=std::move(counter)]() mutable { return ++counter; };
};
auto getSeq1 = sequenceGen(100);
cout << getSeq1()<< endl;
cout << getSeq1()<< endl;
如果不是应该如何实现?
【问题讨论】:
-
“一段代码”。
-
这很奇怪,至少。你为什么要通过右值引用传递一个 int ?参考大小与指针大小相同,int 相同或更小,以及为什么要移动它(考虑相同)。
-
auto const sequenceGen = [](int init){ return [init]()mutable{ return ++init; } };应该这样做(但不是线程安全的)。
标签: c++ design-patterns c++14 enclose