5.2.31 · D3 · HinglishC++ Programming

Worked examplesInline namespaces, anonymous namespaces

3,790 words17 min read↑ Read in English

5.2.31 · D3 · Coding › C++ Programming › Inline namespaces, anonymous namespaces


Scenario matrix

Har namespace question ko ek grid par ek point ki tarah socho. Do sabse important axes hain:

  • Linkage axis — kya koi naam apni .cpp file se bahar jaata hai? (Yeh internal vs external linkage wala sawaal hai.)
  • Visibility / versioning axis — kahan se tum naam likh sakte ho, aur kaunsi definition jeetati hai?
Cell Scenario class Key question Example
C1 Do .cpp files mein global naam Kya linker collide karega? Ex 1
C2 Do .cpp files mein anonymous namespace Same naam, koi collision nahi? Ex 2
C3 Anonymous namespace mein type/template Kya "sirf functions nahi" wala claim sach hai? Ex 3
C4 Anonymous namespace header mein (galat use) Kya toota, aur kitna? Ex 4
C5 Inline namespace, unqualified call Kaun sa version default hai? Ex 5
C6 Inline namespace, explicit v1 call (opt-out) Kya purane callers purana code pin kar sakte hain? Ex 5
C7 inline ko naye version par shift karna (limiting case: v3 release karna) Ek keyword ka migration Ex 6
C8 [[Argument-Dependent Lookup (ADL) ADL]] inline namespace ke through Kya naam unqualified milta hai?
C9 Mangled symbol / ABI (real-world link failure) Kya version symbol mein bake ho jaata hai? Ex 8
C10 Exam twist: inline namespace vs inline function Same word, alag mechanism Ex 9
C11 Inline namespace header mein kai TUs ke across Kya identical inline definition ODR todti hai? Ex 10
Recall Ek sentence mein do axes

Anonymous = internal linkage (linkage axis) ::: yeh decide karta hai ki koi naam apna translation unit chhod ke jaata hai ya nahi. Inline = visibility + versioning (lookup/ABI axis) ::: yeh decide karta hai ki unqualified default kaunsi definition hai aur symbol kya kehlata hai.

Neeche wali figure is poore grid ko ek picture ki tarah dikhati hai. Abhi padho: neeche ki row mein coral boxes linkage-axis failures hain (Ex 1, aur ABI trap Ex 8); mint / butter boxes "koi problem nahi, yahi fix hai" wale cells hain (Ex 2, Ex 3, Ex 9); vertical axis ke upar lavender boxes visibility / versioning cells hain (Ex 5–7). Beech mein white note woh ek decision rule hai jo yaad karna hai: pehle poochho ki bug kis axis par hai. Neeche har worked example is picture ka ek labelled box hai, toh tum hamesha locate kar sakte ho kahan ho.

Figure — Inline namespaces, anonymous namespaces

Worked examples

Ex 1 — Do files mein global naam → woh collision jo avoid karni hai (cell C1)


Ex 2 — Anonymous namespace collision ko gayab karta hai (cell C2)


Ex 3 — Anonymous namespace types ke liye kaam karta hai, jahan static nahi kar sakta (cell C3)


Ex 4 — Degenerate misuse: anonymous namespace header mein (cell C4)


Ex 5 — Inline namespace: default forward, explicit opt-out (cells C5 + C6)


Ex 6 — Limiting case: naya default version promote karna (cell C7)


Ex 7 — ADL ek inline namespace ke through dekhta hai (cell C8)

Figure — Inline namespaces, anonymous namespaces

Ex 8 — Real-world ABI trap: mangled symbol mein version bake ho jaata hai (cell C9)


Ex 9 — Exam twist: inline function vs inline namespace (cell C10)


Ex 10 — Edge case: kai TUs mein header mein ek inline namespace (cell C11)



Recall