zoukankan      html  css  js  c++  java
  • CPP Templates 之 名称分类和名称查找

    名称的分类:

    标示符 identifier:一个只有字符、数字和下划线组成的不间断字符序列
    运算id operator-function id:运算符,例如*、%、+\-,
    强制转换id conversation-function id:static_cast、dynamic_cast之类
    模板id template id:模板名称
    非受限id unqualified-id:广义化的标示符 identifier,
    受限id qualified-id:用一个类名或者名字空间名称对一个unqualified-id进行限定
    受限名称 qualified name:
    非受限名称 unqualified name:
    依赖型名称 dependent name:依赖于模板参数
    非依赖型名称 undependent name:不依赖于模板参数

    名称查找:

    受限名称:在受限作用域内查找就好
    非受限名称:在调用点可见的和ADL argument-dependent lookup

    ADL:
        在函数调用过程中 如果普通查找就能找到函数的名字,那么就不会应用ADL。如果把被调用函

    数的名称用圆括号()括起来,例如(max),也不会调用ADL。否则,如果名称后面的括号里面有一个

    或多个实参表达式,那么这些实参的associated class和associated namespace。
        对于给定类型,对于associated class和associated namespace所组成集合的准确定义,我们

    可以通过下列规则来确定:
    1.对于基本类型,该集合为空
    2.对于指针和引用类型,该集合是指针所指向的类和引用锁引用的类型的associated class和associated namespace
    3.对于枚举类型,associated namespace就是其所在的namespace;对于类成员,起associtated

    class指的是它所在的类。
    4.对于class类型(包括联合类型),associated class集合包括:该class本身、它的外围类型、

    它的直接和间接基类。associated namespace集合是每个associated class所在的namespace。如

    果这个类是类模板实例化产生的,那么还包括:模板类型实参本身的类型、声明模板的模板实参所

    在的class和namespace
    5.对于函数类型,该集合包括所有参数类型和返回类型的associated class和associated

    namespace
    6.对于类X的成员指针类型,除了包括成员相关的associated class和associated namespace之外

    ,该集合还包括与X相关的associated class和associated namespace;
  • 相关阅读:
    ASP.NET请求管道、应用程序生命周期、整体运行机制
    PHP面试总结
    ASP.NET MVC源码分析系列
    SQL中的重要语句
    Nicescroll滚动条插件的用法
    Nunit2.5.10快速上手(笔记)
    ucore 源码剖析
    《ucore lab8》实验报告
    《ucore lab7》实验报告
    《ucore lab6》实验报告
  • 原文地址:https://www.cnblogs.com/bayonetxxx/p/1598153.html
Copyright © 2011-2022 走看看