* fix(cpp): dependent-base resolution across nested/inline namespaces (#1634)
Replace exact namespace-prefix match with prefix-contains filter capped
at one level deeper, then accept only if exactly one candidate survives.
Behavior change:
- Derived<T> in ns::outer can now find Inner<T> in ns::outer::inner
(nested namespace) or ns::v1 (inline namespace) via prefix walking
- Global-scope deriving classes match any single-segment namespace
- Sibling namespace collisions (e.g. detail::Inner vs public_api::Inner)
correctly suppress when multiple candidates share the same simple name
- Deep nesting (ns → ns.a.b) still suppresses (one-level cap)
Fixtures added:
pos: nested ns, this->f() -> 1 edge to inner::Inner::f
neg: no Inner exists -> 0 edges
inline: inline namespace variant -> 1 edge
sibling-suppress: sibling collision -> 0 edges (ambiguity suppressed)
Part of #1564.
64.
* test: add deep-nesting suppression fixture, link #1815 in comment, unqualify inline fixture
- Update code comment to reference follow-up issue #1815 instead of
'deferred to follow-up'
- Inline fixture: drop explicit v1:: qualifier (exercise inline-expansion
path more idiomatically as DoD intended)
- Add deep-nesting suppression fixture (ns.a.b -> 0 edges) that pins the
one-level cap as a documented invariant
- Add legacy parity entry for deep-nesting fixture
Part of #1564, #1634.
---------
Co-authored-by: Gergő Magyar <gergomagyar@icloud.com>