zoukankan      html  css  js  c++  java
  • 类模板中非类型参数的模板实参

    1,绑定给非类型参数的表达式必须是一个常量表达式,即,它必须能在编译时被计算出结果。

    2,非 const 对象的值不是一个常量表达式,它不能被用作非类型模板参数的实参

    3,名字空间域中任何对象的地址,即使该对象不是const 类型,是一个常量表达式,而局部对象的地址则不是。

    4, sizeof表达式的结果是一个常量表达式,所以它可以被用作非类型模板参数的实参。

    对于一个模板非类型参数,如果两个不同的表达式的求值结果相同,则它们被认为是等价的模板实参。

    在模板实参的类型和非类型模板参数的类型之间允许进行一些转换,能被允许的转换集是函数实参上被允许的转换的子集:

    1 左值转换:包括从左值到右值的转换,从数组到指针的转换,以及从函数到指针的转换。

    2 限定修饰转换 例如:从 int* 到 const int* 的转换。

    3 提升 例如:// 从 short 到 int 的提升

    4 整值转换 例如:// 从 int 到 unsigned int 的转换。

    把整型0 转换成指针值的转换是不允许的。

    template <int *ptr>
    class BufPtr { ... };
     
    // 错误: 0 的类型是 int
    // 不能通过 隐式转换 隐式地转换到空指针
    BufPtr< 0 > nil;



  • 相关阅读:
    MVC 易忘备留
    SQL SERVER 常用易忘语句备留
    ThreadStatic特性
    jstack用法
    PV、TPS、QPS是怎么计算出来的?
    性能测试Loadrunner与Mysql
    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
    【MySQL】计算 TPS,QPS 的方式
    【转】jquery 1.3 的 live方法
    【转】HttpCompress
  • 原文地址:https://www.cnblogs.com/lidan/p/2239490.html
Copyright © 2011-2022 走看看