
C++
weixin_43530460
这个作者很懒,什么都没留下…
展开
-
C++ Range - for_each1: RANGES_INLINE_VARIABLE
C++ range分析 - 1前言ranges::for_each前言追求simpler,cleaner,more expressive的C++在range表达被引入标准库之后,肯定会被大规模被使用。这里先来体验一下range的优美。这边分析的代码都来之:https://github.com/ericniebler/range-v3.ranges::for_each#include &l...原创 2019-08-08 22:59:07 · 318 阅读 · 0 评论 -
C++ Range - for_each4:invoke
invoke在for_each2节中讲到for_each的调用函数invoke,在第for_each3节中,分析了一个关键宏CPP_auto_fun的实现,发现原来的代码中,Eric的例子返回值应该需要auto,给他提了patch. 这节回到invoke的分析。operator () template<class F, class T, class T1, class... Args...原创 2019-08-13 21:45:45 · 205 阅读 · 0 评论 -
C++ Range - for_each5:回答for_each2中的问题
问题解答第一个for_each函数 template<typename I, typename S, typename F, typename P = identity> auto operator()(I begin, S end, F fun, P proj = P{}) const -> CPP_ret(for_each_res...原创 2019-08-13 22:55:02 · 220 阅读 · 0 评论 -
C++ Range:view all - 1
view::allinclude\range\v3\view\all.hpp struct all_fn : pipeable<all_fn> { private: /// If it's a view already, pass it though. template<typena...原创 2019-08-14 21:47:27 · 400 阅读 · 0 评论 -
std::function 的性能陷进
前言std::function 的作用很强大,他让vector等保存不同类型函数的对象: function, functor, lambda…成为了可能。但他有一个潜在的性能风险:在保存lambda/bind时,如果对象的大小 大于两个指针的大小,他就需要分配动态空间。这是大部分人写C++的人不期望看到的。function什么分配内存先看function实现的几段代码:6.1.0a-2/in...原创 2019-08-24 17:31:35 · 2750 阅读 · 1 评论 -
C++ Range - for_each3: CPP_auto_fun的实现
CPP_auto_funCPP_auto_fun是通过一系列宏定义实现的。先看它的调用的几个宏定义。CPP_PP_CHECK#define CPP_PP_CHECK(...) CPP_PP_CHECK_N(__VA_ARGS__, 0,)#define CPP_PP_CHECK_N(x, n, ...) nCHECK扩展成0或者第二个参数。代码 CPP_PP_CHECK(); ...原创 2019-08-12 20:11:32 · 244 阅读 · 0 评论