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_;
  • 相关阅读:
    左偏树
    output html
    jsp web.xml
    mysql link db
    beamline
    jsp embend java into html / mix scriptlets and HTML
    StringTokenizer
    TreeSet
    centOS 显示中文
    request and response
  • 原文地址:https://www.cnblogs.com/ggzone/p/5094530.html
Copyright © 2011-2022 走看看