????3.2???????????????(Inline Namespace C++11)
????C++11?У?????inline namespace????????????е?????????????????????????????????????????????汾?????????????
????inline?????????????????????е????????????????????????Χ??????????н???????????????????inline????????????????????????????????
????inline?????????????????????????????????????????????????inline???????????????μ?????????????.
// file V98.hpp:
namespace V98
{
void f(int);    // does something
// ...
}
// file V99.hpp:
inline namespace V99
{
void f(int);    // does something better than the V98 version
void f(double); // new feature
// ...
}
// file Mine.hpp:
namespace Mine
{
#include "V99.hpp"
#include "V98.hpp"
}
//file example.cpp
#include "Mine.hpp"
using namespace Mine;
// ...
V98::f(1);  // old version
V99::f(1);  // new version
f(1);        //default version
????4???????????(Global Namespce)
????????????????????????(?????????????????????????????????)??????????????????е??
????????????????????????????????????????С????????????????????????????Щ????????????????
????????????????????????????????????????????????????????????????????????
??????????ü?????·??????????????????????
????::member_name
????5????????????(Unnamed Namespace)
????????????????δ???????δ?????????????????????и???????????巽?????£?
????namespace     //No name
????{
????//members....
????}
????δ?????????????????????????????δ??????????????????????????????????????????????
????δ?????????????????????????в?????????????????????????????????δ?????????????
????δ?????????????????????????????????塣??δ??????????????ж?????????????????????????????????????
????δ??????????????ж???????????????????????????????????????????
#include <iostream>
namespace //unnamed namespace
{
int count = 1;
}
using namespace std;
namespace //unnamed namespace
{
void name_printf(void)
{
cout << "count = " << count << endl;
}
}
int main(void)
{
count = 3;     //??????
name_printf(); //??????
return 0;
}
????δ??????????????ж????????????????????????????п????
????????????????????δ?????????????????????????????????????????????????Щ???彫???ò??????塣
????δ??????????????г???????????????????????ж????????????????????£?????????????????
????int i;  // global variable
????namespace //unnamed namespace
????{
????int i;
????}
????// error: reference to ‘i’ is ambiguous
??????????????????????δ??????????????????????????????????????
???????δ???????????????????????е?????????淽???????Χ??????????????:
????int i; //Global Variable
????namespace local
????{
????namespace //unnamed namespace
????{
????int i; // ok: i defined in a nested unnamed namespace is distinct from global i
????}
????}
????local::i = 42;
?????????????????δ???????????????????????????????????????У???????????е?????????岻???????塣
????δ????????????????????е???????
???????? C++ ?????????????????????????????????static??????????????????????????С?
????????о?????????????? C ?????ж????? C++ ???????????????????????????δ???汾?в?????
?????????????????????????δ?????????檔
????6????????????
???????????????????????????????????????????????滻???????
??????????????????????????????б????????????????????????????????á?
??????????????????????????????????????????????????????????????????
????namespace ???? = ????????????????;
????????????????????????????????
#include <iostream>
namespace MyNames
{
int iVal1 = 100;
int iVal2 = 200;
}
namespace MyAlias = MyNames;  //????????
int main(void)
{
std::cout<<MyAlias::iVal1<<std::endl; //???????
std::cout<<MyAlias::iVal2<<std::endl; //???????
return 0;
}