但显然这种做法损失性能
只要定义中出现了左值引用, 引用折叠规则就会将其变为左值引用, 这是std::forward()的核心原理
编译器优化的时候本身就打开了返回值优化功能, 因此返回右值并不是很必要的事...因为模板不允许不同名称空间的名字在模板中特化
C++11给namespace引入了inline关键字, 经过inline的名称会自动内联展开到上层, 从而破坏名称空间的封装
因此建议还是尽量用打开空间的方法使用...下面是这类做法的一个简单样例
// From: https://en.wikipedia.org/wiki/Substitution_failure_is_not_an_error
// 这段在展示如何利用模板在编译器判断模板参数是否具有某个定义的符号...函数, 且支持++和==, 常与auto共用, 但要注意range-for中的auto是解引用后的对象而不是迭代器
decltype
C++11扩展了C++98就有的RTTI(运行时类型识别)机制, 每个类在编译的时候都会产生一个...const对象时, 尽管对象本身的const类型能被获取, 但是从这个对象中取出成员的const会丢失
5 提高类型安全
强类型枚举
普通的枚举enum代表对应到整数值的一些名字(常量数值的别名), 从0