T240730 inline namespace
T240725 说到,Unnamed namespaces 有一个唯一的名称会通过 using-directives 自动导入,倘若可以手动指定这个名称,就是 inline namespaces 了。… Continue Reading T240730 inline namespace
Dive deep into the C++ core, and discover more!
T240725 说到,Unnamed namespaces 有一个唯一的名称会通过 using-directives 自动导入,倘若可以手动指定这个名称,就是 inline namespaces 了。… Continue Reading T240730 inline namespace
Unnamed namespaces,也叫 Anonymous namespaces,是命名空间的一种特殊形式。这种形式可以省略命名空间的名称,如: namespace { /* .. . */ } … Continue Reading T240725 Unnamed namespaces
本篇分享详细解释一下 Top-level const 和 Low-level const 的概念。 Top-level 和 Low-level 指的是名称修饰符所处的位置,const 是最常见的修饰符… Continue Reading T240516 Top-level const and Low-level const
这是昨天群里的一个问题,但我想谈的是背后的本质问题。 这个问题其实可以简化为: template <typename …Args> void foo(std::function<… Continue Reading T240104 Failed to Passing a Lambda Expression to std::function
不知大家是否遇到过这样的代码: template <class… Args> void f(Args……) {} 参数包后面紧跟着 6 个 .,一般不是用 … 来扩展参数包… Continue Reading T240102 What does the …… mean in C++?
模板加约束,其中有迷思,着意分析一下。 template <typename T> void f(T t) {} template <typename T> void f(T … Continue Reading T231212 Dummy Rquires Clause Positioning in Function Template Overloading
上篇讲解了 Compile time for,它是遍历技术中的迭代方式之一,特别常用。 它一般与 Fold expressions 组合使用,它们两个,一个相当于编译期的 Range-based fo… Continue Reading T231119 几种遍历技术实现结构体成员计数的比较
先说明,本篇并不是说 Expansion statements。 遍历方式分为两种,自下而上叫迭代,自上而下叫递归。 递归往往需要多个函数(if constexpr 可以避免),一般迭代是一种更加自然… Continue Reading T231111 Compile time for
这篇稍微总结一下异构类型的迭代方法。 首先是静态异构类型,主要指的就是 tuple like 类型,它们可以使用 std::apply 迭代。 void print(auto tuple_like_v… Continue Reading T231104 异构类型迭代法
宏编程的基本原理都已暗含于解决前两节问题的过程当中,本节开始,依此继续展开。 经由前面的努力,我们已掌握条件逻辑在宏编程的表示,代码生成往往涉及循环,所以今天来讲如何实现一个 FOR_EACH。 FO… Continue Reading T230925 Generative Metaprogramming with Macro Preprocessor (Part 3)