1. inline必须出现在命名空间第一次出现的地方
inline namespace FifthEd {
//...
}
//后续再打开命名空间的时候可以写inline也可以不写
namespace FifthEd { // 隐式内敛
// ...
}
2. 当应用程序的代码在一次发布和另一次发布之间发生改变时,常使用内联命名空间。
eg. 把本书当前版本的所有代码放在一个内联命名空间中,而之前版本的代码都放在一个非内联命名空间中
namespace FourthEd {
class Query_base { /*...*/ };
// 本书第4版用到的其他代码
}
// 命名空间cplusplus_primer将同时使用这两个命名空间
namespace cplusplus_primer {
#include "FifthEd.h"
#include "FoutthEd.h"
}
FifthEd是内联的,所以形如cplusplus_primer::的代码可以直接获得FifthEd的成员
如果想用到早期版本的代码,则必须加上完整的外层命名空间名字:cplusplus_primer::FourthEd::Query_base