作者回复: 哈哈,有意思的比喻。以前学过函数式编程?
作者回复: OK,没啥大问题。
代码风格要稍微说明一下。你似乎是模拟了库代码的风格,这还是有点风险的。在一般的用户代码里,不应该出现双下划线打头、或者下划线加大写字母打头的标识符——这是给系统保留的。
详见:
https://zh.cppreference.com/w/cpp/language/identifiers
作者回复: 哦,这个是我写的,不是标准库里的。
源代码在第 7 讲讲解了。
https://github.com/adah1972/nvwa/blob/master/nvwa/istream_line_reader.h
作者回复: 性能。不用引用,对于比较重(比如,有较多按值捕获)的函数对象,拷贝的开销就比较大了。用 Fun&& 和 std::forward,就是要把拷贝尽可能转变成移动。
作者回复: 功能看起来没啥问题。嗯,太长,所以贴到别的留言下去了,还是有点怪怪的。
还是要提醒,在一般的用户代码里,不应该出现双下划线打头、或者下划线加大写字母打头的标识符——这是给系统保留的。
详见:
https://zh.cppreference.com/w/cpp/language/identifiers
作者回复: 跟学外语一样,基本诀窍就是多读多写。文档现在都很齐全的,但除了极少数天才式的人物,看了不用就会忘掉吧。而且,没真正用过,碰到一些坑,看了的理解都不一定正确。
另外就是看书了。书比文档更有体系性,更适合完整的学习,需要投入整块的时间。标准库的书,应该就是 Nicolai Josuttis 的那本 The C++ Standard Library 第二版了。中文版刚查了一下,侯捷译,一千多页。
作者回复: Y Combinator 只是好玩展示一下,刺激一下大家的好奇心。要进一步了解,是需要看参考资料,或者其他中英文资料的。你说的这篇我之前没看过,内容也不错。
作者回复: map-reduce 是一种方法,已经有很久了。在 C++ 里的直接对应是 transform 和 accumulate。TBB 见参考资料 [7]。