关于c++:C模板元编程实战读书笔记

2次阅读

共计 504 个字符,预计需要花费 2 分钟才能阅读完成。

  1. C++ 模板元编程是函数式编程,是无副作用的函数(输出雷同,屡次调用输入雷同)。constexpr就是标注这个函数无副作用(数值元函数),与之对应的是类型元函数。
  2. 类型元函数:输出参数为类型,输入参数也为类型。
template <>
struct Fun<int>{
    using reference_type = int&;
    using value_type = int;
};

输出为int,输入为Fun<int>::reference_type/value_type

  1. constexpr 函数传入 constexpr 参数时,则进行编译期计算,否则进行运行时计算。
  2. 元数据分为

    1. 数值
    2. 类型
    3. 模板
  3. 容器模板:通过可变参数模板作为元数据的容器,另外只在必要时才进行定义。
  4. 程序、条件分支、循环语句

    1. 程序
    2. 条件分支

      1. std::conditional_t
      2. 偏特化(留神未齐全特化的类中不容许有齐全特化)
      3. std::enable_if_t 当条件为真时返回type,利用了SFINAE,匹配失败并非谬误
    3. 循环:应用递归运算循环,偏特化作为完结的条件。
  5. 编译器分支和运行时函数相结合,通过元函数在编译期抉择正确的运行时函数。利用 if constexpr 抉择运行时执行的代码。
  6. CRTP
正文完
 0