//CRTP是一种cpp中独特的设计模式,也是C++多态(静态)的一种实现方法
//相比与运行时多态的好处是直接生成机器码,有更好的性能但是灵活性更差,生成的代码体积更大
#include<iostream>

template<typename T> 

class basic
{
public:
    void sent()
    {
        get_T().sent();
    }
private:
    T& get_T(){return static_cast<T&>(*this);}
    friend T;
};


class sent_to_screen:public basic<sent_to_screen>
{
public:
    void sent()
    {
        std::cout<<"hello world"<<std::endl;
    }
};

int main()
{
    basic<sent_to_screen> hello;
    hello.sent();
}