zoukankan      html  css  js  c++  java
  • template template parameter

    测试代码

    C++ 11里面

    #include <stdexcept>
    #include <iostream>
    #include <memory>
    #include <vector>
    #include <string>
    #include <deque>
    
    template<typename T>
    using Vec = std::vector<T, std::allocator<T>>;
    
    class A
    {
    private:
        int a = 0;
        int b = 2;
    public:
        A() = default;
        A(int pa1, int pa2) :a(pa1), b(pa2) { printf("A Construct call!"); };
    };
    
    template<typename T,template<class> class Container>
    class XCls
    {
    private:
        Container<T> elem;
    public:
        XCls() {
            for (int i = 0; i < 4096; i++)
                elem.insert(elem.end(), T(i,4096-i));
        }
    };
    
    int main()
    {
        XCls<A, Vec> test1;
    }

    在C++ 14里面这样已经不会报错了

    #include <stdexcept>
    #include <iostream>
    #include <memory>
    #include <vector>
    #include <string>
    #include <deque>
    
    class A
    {
    private:
        int a = 0;
        int b = 2;
    public:
        A() = default;
        A(int pa1, int pa2) :a(pa1), b(pa2) { printf("A Construct call!"); };
    };
    
    template<typename T,template<class> class Container>
    class XCls
    {
    private:
        Container<T> elem;
    public:
        XCls() {
            for (int i = 0; i < 4096; i++)
                elem.insert(elem.end(), T(i,4096-i));
        }
    };
    
    int main()
    {
        XCls<A, std::vector> test1;
    }

    示例结果

  • 相关阅读:
    Python的词法分析与语法分析
    使用svn log确定分支创建的时间点
    Python的作用域
    SVN的版本日期
    理解SVN关键词BASE,HEAD,COMMITTED,PREV
    SVN的属性
    EL表达式 (详解)
    java jsp el fn
    java防止表单重复提交
    数据库的事务处理
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/14361401.html
Copyright © 2011-2022 走看看