Mở rộng namespace: khai báo lại namespace cùng tên để thêm thành viên.
namespace NS { int a = 10; }
namespace NS { int b = 20; } // mở rộng
// dùng NS::a, NS::b
Unnamed namespace (anonymous namespace):
- Không có tên, compiler tự sinh tên duy nhất.
- Chỉ truy cập được trong file định nghĩa (internal linkage).
- Thay thế cho
staticở phạm vi toàn cục.
namespace { int x = 10; } // unnamed
int main() { cout << x; } // OK, dùng trực tiếp