typedef char RT1;
typedef struct{ char a[2]; } RT2;
template<typename T> RT1 test(typename T::X const*){
cout << "typename T::x const* called" << endl;
}
template<typename T> RT2 test(...){
cout << "..." << called;
}

class foo{
public:
typedef int X;
};
#define type_has_member_type_X(T)\
(sizeof(test<T>(0)) == 1)

可以看一下上面的宏,用于判定类型中是否有type X的定义,注意里面似乎是调用了一个函数,其实不是。要知道sizeof是编译时参数,所以

上面的宏只在编译时用类型判断得到结果。

sizeof 是编译时运算符的更多相关文章

  1. 20140319 const sizeof define 编译时分配内存

    1.面试宝典预处理,const,sizeof Define作用定义函数: //用一个宏定义FIND求一个结构体struc里某个变量相对于struc的偏移量,如FIND(student,a)//等于0 ...

  2. Visual Studio 行末回车时运算符两侧自动加空格是怎么设置的

    在工具—>选项->文本编辑器->c#->格式设置->间距后有三个选项 如果已经选中"二元运算符前后插入空格" 而VS又抽风没有这个功能时,可以选中其余 ...

  3. 全面整理的C++面试题

    C++面试题 1.是不是一个父类写了一个virtual 函数,假设子类覆盖它的函数不加virtual ,也能实现多态? virtual修饰符会被隐形继承的. private 也被集成,仅仅事派生类没有 ...

  4. c++面试常见160问

    1.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"?答:首先,extern是C/C++语言中表明函数和全局变量作用范围的关键字,该关键字告诉编译器,其 ...

  5. 完全合并C++面试题

    C++面试题 1.是不是父母写了virtual 功能,假设子类重写它的功能不virtual ,也使多态性? virtual修饰符隐形遗传. private 还集成.问权限而已 virtual可加可不加 ...

  6. C++面试基础知识

    C++经典面试题(最全,面中率最高 1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数.malloc与free ...

  7. C++经典面试题(最全,面中率最高)

    C++经典面试题(最全,面中率最高) 1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数.malloc与fre ...

  8. 2. C/C++笔试面试经典题目二

    1. C和C++中struct有什么区别? [参考答案] [解析]C中的struct没有保护行为,没有public,private,protected,内部不能有函数,但可以有函数指针. 2. C++ ...

  9. (转)C++经典面试题(最全,面中率最高)

    1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数.malloc与free是C++/C语言的标准库函数,new ...

随机推荐

  1. OpenERP report doesn't work

    1. When you have used OpenOffice edited  one of reports,it has stored the report's banary data is da ...

  2. PHP——smarty模板(做登录页面和主页面)

    denglu.php <?php include "init.inc.php"; $smarty->assign("action","ma ...

  3. PHP——上传头像(2)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. java.lang.NoSuchMethodError: org.apache.spark.util.ThreadUtils$.newDae

    -classpath "C:\Program Files\Java\jdk1.8.0_131\jre\lib\charsets.jar;C:\Program Files\Java\jdk1. ...

  5. Android WebView 笔记

    WebView(网络视图)能载入显示载入网页.将网页内容载入到手机client,它使用了WebKit渲染引擎载入显示网页,实现WebView有下面方法: 首先要实如今手机client显示必需要求注冊一 ...

  6. Oracle启动中,spfile.ora、init<SID>.ora、spfile<SID>.ora 这三个文件正确的先后顺序是什么?

    Oracle启动中,spfile.ora.init<SID>.ora.spfile<SID>.ora 这三个文件正确的先后顺序是什么? 解答:启动数据库,使用startup命令 ...

  7. JSP数据库连接成功

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...

  8. 【BZOJ】3402: [Usaco2009 Open]Hide and Seek 捉迷藏(spfa)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3402 又是spfa水题.. #include <cstdio> #include < ...

  9. 卡友友刷MPOS注册开通流程!

    1.下载友刷APP:打开微信扫描机器背面二维码—点击右上角游览器打开 2. 注册-身份证认证-结算卡绑定:用本人手机号注册完成后,顺着进行身份认证.以及储蓄结算卡绑定.具体看下图: 3.绑定机器:选择 ...

  10. 拦截asp.net输出流并进行处理的方法

    本文实例主要实现对已经生成了HTML的页面做一些输出到客户端之前的处理. 方法的实现原理是:把Response的输出重定向到自定义的容器内,也就是我们的StringBuilder对象里,在HTML所有 ...