初始化列表的效果总是慢于就地初始化, 但也快过在构造函数中进行赋值
注意: 非常量的静态变量依然要在头文件外定义从而保证在程序中只存在一个
sizeof()可以对类成员表达式使用了
类模板也可以声明友元了..., 例如当存在非POD成员且这个成员有非平凡的构造函数时, 这个union的默认构造将被删除
匿名的union对外是开放的, 因此放在类的声明中可以按照构造函数的不同而初始化为不同的类型, 此时类被称为枚举式的类...SFINEA的原因int对f1的尝试不算做实例化的error, 而属于匹配过程中的一次failure
f(10);
}
基于对这个匹配过程的标准化描述, 我们可以无关编译器地对模板匹配的可行性进行判断...下面是这类做法的一个简单样例
// From: https://en.wikipedia.org/wiki/Substitution_failure_is_not_an_error
// 这段在展示如何利用模板在编译器判断模板参数是否具有某个定义的符号...endl; // 输出 false
// foo两者都可以满足, 同时对于f2来说匹配更加特化, 因此实例化了f2, 从而true
// 通过这样对于函数匹配的hack操作, 我们可以在编译期获得某个模板参数是否具有某个属性