C++11 兼容 C++98 ,理论上能够以C++98编译的程序都能够由C++11编译,当然需要修复该程序引入了C++11的关键字的问题
为了使程序能够在不同版本的C++编译器编译并利用C++11的一些优秀特征,可以判断 __cplusplus 的值
对于C++11, 有 #define __cplusplus 201103L 成立
对于C++98,C++03 有 #define __cplusplus 199711L 成立
然而,__cplusplus 的值并不如上所述,因为编译器有时候会提供不同的值
需要注意的是:向后兼容只是对源代码编译来说的,二进制并不能够保证被兼容,因此链接一个由C++11编译的代码与C++98编译的代码将可能失败,特别是出现如下情况,C++11对已存在的操作符返回了不同的类型,链接时存在两个版本,仅返回值类型不同,而C++中,仅靠返回值类型来区分重载是不允许的