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

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

作者: 秋冬不寒 | 来源:发表于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

    相关文章

      网友评论

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

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