首页 > 其他分享 >模板奇异递归+扩展方法

模板奇异递归+扩展方法

时间:2022-11-16 19:23:26浏览次数:90  
标签:return extension 递归 operator base 奇异 interface 模板 struct

#include <iostream>

template<class derived>
struct base
{
    derived getDerivedType(){};
 void interface(){ static_cast<derived*>(this)->interface();};
};

struct derived1:public base<derived1>
{
    using base::getDerivedType;
 void interface()
 {
     std::cout<< "derived1 interface \n";
 }

};
struct derived2:public base<derived2>
{
 void interface()
 {
     std::cout<< "derived2 interface \n";
 }

};

template <class T>
struct interface_t {
    base<T> operator()( base<T>& s) const
    {
        s.interface();
        return s;
    }
};
template<class T>
const interface_t<T> ext_interface ={}; 

template<class T>
base<T> operator|(base<T>& that,interface_t<T> ext)
{
    return ext(that);
}

struct extension_interface
{
    extension_interface& operator-(void)
    {
    return *this;
    }
    template <class T>
    friend const base<T>&  operator >(base<T>& that,extension_interface& ex)
    {
        that.interface();
        return that;
    }
};




int main()
{
    derived1*  d1 = new derived1();
    derived2 d2;
    //d2| ext_interface<decltype(d2.getDerivedType())> ; //boost这种扩展模板类不方便
    d2>-extension_interface(); 
    *d1>-extension_interface();
    return 0;

}

标签:return,extension,递归,operator,base,奇异,interface,模板,struct
From: https://www.cnblogs.com/nocanstillbb/p/16897222.html

相关文章

  • Aspose.Words利用Word模板导出Word文档
       今天工作中遇到了导出Word文档的问题,但是在搜索Aspose.Words导出Word文档时发现网上的方法都是有头没尾的,有的只有一小段实例,让人看着摸不着头脑。借着https://w......
  • [递归专题打卡]2021 6.30-7.2
    2021/6/30链接:​​https://ac.nowcoder.com/acm/problem/14310​​​ ★字符串逆序输入一个字符串,长度在100以内,按相反次序输出其中的所有字符。输入描述:输入一个字符串......
  • 第7章 类模板array和vector、异常捕获(笔记)
    7.1简介数据结构7.2array对象一组具有相同类型、连续的内存区域,用下标法和索引来操作。7.3array对象的声明array<类型,大小>array对象名7.4使用array对象的例子......
  • (二)递归 4132 四则运算表达式求值
    四则运算表达式求值​​AC代码​​​​解析​​​​坑​​​​新知识​​​​cout格式​​​​true代表1,false代表0​​​​输入流操作​​​​ASCII​​AC代码/***********......
  • 详解主成分分析PCA与奇异值分解SVD-降维后的矩阵components_ & inverse_transform【菜
    视频作者:[菜菜TsaiTsai]链接:[【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili]V(k,n)这个矩阵保存在.components_这个属性当中我们之前谈到......
  • 尚硅谷vue课程之模板语法
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content......
  • P8436 【模板】边双连通分量
    P8436【模板】边双连通分量//这个是看边和点,而不是看点和点#include<bits/stdc++.h>usingnamespacestd;constintN=5e5+5;constintM=2e6+5;inth[N],ne[M<<1......
  • 4.django-模板
    在django中,模板引擎(DTL)是一种可以让开发者将服务端数据填充到html页面中的完成渲染的技术模板引擎的原理分为以下三步:在项目配置文件中指定保存模板文件的的模板目录,一......
  • P8435 【模板】点双连通分量
    P8435【模板】点双连通分量#include<bits/stdc++.h>usingnamespacestd;constintN=5e5+5;constintM=4e6+6;inth[N],ne[M],e[M],tot;voidadd(intfrom,int......
  • Word13 《经费联审结算单》模板office真题
    1.根据题目一的要求,打开素材文件,点击【文件】-【另存为】,选择【当前文件夹】,命名为Word。   2.根据题目二的要求,在【布局】里点击【页面设置】的右下角,打开页面设......