美文网首页
元编程基础(一):元函数

元编程基础(一):元函数

作者: 秋冬不寒 | 来源:发表于2022-04-28 23:46 被阅读0次

元函数

定义: 无副作用的映射或变换,即在输入相同的情况下,多次调用同一个函数,得到的结果也是相同的。
运行: 编译期运行。在编译阶段,编译器只能构造常量作为中间结果。

类型元函数

template <typename T>
struct Fun_ { using type = T; };

template <>
struct Fun_<int> { using type = unsigned int; };

int main()
{
    Fun_<int>::type h = 3;
    return 0;
}

对应汇编代码为:


汇编指令.png

这里Fun_是一个元函数,具有以下性质:

  • 输入类型T,以模板参数的形式传递到Fun_模板中;
  • 输出为模板的内部类型type, 即Fun_<T>::type;
  • 通过模板特化实现映射转换

如果放宽条件,不要求输入输出均为类型等条件,我们可以得到元函数:

template <typename T>
    using Fun  = typename Fun_<T>::type;
Fun<int> h = 3;

其汇编代码为:


Fun元函数.png

相关文章

  • 元编程基础(一):元函数

    元函数 定义: 无副作用的映射或变换,即在输入相同的情况下,多次调用同一个函数,得到的结果也是相同的。运行: 编译...

  • C++11 模板元编程 - 两阶段的C++语言

    前面我们介绍了C++模板元编程的基础知识。我们将模板元编程的计算对象统一到类型上,引入了元函数的概念。元函数是模板...

  • 元编程

    摘自《Javascript函数式编程》在函数式编程书中这样定义元编程:编写代码来做一些事情叫作编程,而元编程是当你...

  • 模板元编程

    什么是模板元 模板元编程是一种编译期计算的编程方法。如果你学过任意一门函数式的编程语言,那么你对模板元编程的理解一...

  • Lua极简入门(十)——面向对象

    在介绍完Lua的基础知识包括元表,函数式编程之后,终于到了Lua面向对象编程。虽然并不打算使用Lua进行大型应用系...

  • C++11 模板元编程 - 基础类型和元函数

    前面已经介绍过了,TLP库中通过IntType和BoolType对int和bool值进行封装,并且提供了对应的计算...

  • Python装饰器

    装饰器简介 在Python中,装饰器属于“元编程”的类别,“元编程”的主要目的就是创建函数或者类,并且用它们来操纵...

  • C++11 模板元编程 - 元函数

    我们继续演进前面那个无聊的类型计算的例子,来得出元函数的定义。 前面我们实现了PointerOf,它对于传进的任意...

  • 第十一章 使用类(2)友元

    (二)友元 1.友元的概念 友元有三种:友元函数,友元类,友元成员函数。这里主要介绍友元函数。通过让函数成为类的...

  • C++11 模板元编程 - 元编程

    从本节开始我们将模板元编程当做一门独立的函数式语言来讨论它的方方面面。 所谓元编程,就是指可以产生程序的程序。由于...

网友评论

      本文标题:元编程基础(一):元函数

      本文链接:https://www.haomeiwen.com/subject/jryjyrtx.html