zoukankan      html  css  js  c++  java
  • C++模板的一些巧妙功能

    判断类中是否有指定名称的函数:

    #include<utility>
    
    
    #define HAS_MEMBER(member)
    template<typename T,typename... Args>
    struct has_member_##member
    {
    private:
        template<typename U> 
        static auto Check(int)->decltype(std::declval<U>().member(std::declval<Args>()...), std::true_type()); 
        template<typename U>
        static std::false_type Check(...);
    public:
        enum{value=std::is_same<decltype(Check<T>(0)),std::true_type>::value };
    };
    
    
    HAS_MEMBER(before)
    cout << has_member_before<AA>().value << endl;//是否有无参的before函数
    cout << has_member_before<AA,int>().value << endl;//是否有参数是int的before函数

    判断类成员函数返回值类型:
    假设ContianerT为vector<int>或者const vecotr<int>

    decltype(std::declval<ContainerT>().begin()) it_;
  • 相关阅读:
    Zepto源码分析-event模块
    Zepto源码分析-callbacks模块
    Zepto源码分析-zepto模块
    Zepto源码分析-架构
    HTML5标签
    前端微信分享
    .net core 2.x
    .net core 2.x
    .net core 2.x
    .net core 2.x
  • 原文地址:https://www.cnblogs.com/ggzone/p/10121253.html
Copyright © 2011-2022 走看看