Report a bug
		
				If you spot a problem with this page, click here to create a Bugzilla issue.
		
			Improve this page
		
			Quickly fork, edit online, and submit a pull request for this page.
			Requires a signed-in GitHub account. This works well for small changes.
			If you'd like to make larger changes you may want to consider using
			a local clone.
		
	dmd.nspace
A scoped C++ namespace symbol
 D supports the following syntax to declare symbol(s) as being part of a
 C++ namespace:
extern (C++, "myNamespace") { /+ Symbols +/ } // String variant extern (C++, SomeNamespace) { /+ Other symbols +/ } // Identifier variantThe first form is an attribute and only affects mangling, and is implemented in dmd.attrib. The second form introduces a named scope and allows symbols to be refered to with or without the namespace name, much like a named template mixin, and is implemented in this module.
extern (C++, Basket) { struct StrawBerry; void swapFood (Strawberry* f1, Strawberry* f2); } void main () { Basket.StrawBerry fruit1; StrawBerry fruit2; Basket.swapFood(fruit1, fruit2); swapFood(fruit1, fruit2); }Hence the Nspace symbol implements the usual ScopeDsymbol semantics. Note that it implies extern(C++) so it cannot be used as a generic named scope. Additionally, Nspace with the same Identifier can be defined in different module (as C++ allows a namespace to be spread accross translation units), but symbols in it should be considered part of the same scope. Lastly, not all possible C++ namespace names are valid D identifier.
See Also: 
Authors: 
License: 
Source nspace.d
Documentation https://dlang.org/phobos/dmd_nspace.html
- classNspace: dmd.dsymbol.ScopeDsymbol;
- Ditto- ExpressionidentExp;
- Namespace identifier resolved during semantic.
 
Copyright © 1999-2025 by the D Language Foundation | Page generated by
Ddoc on Mon Mar 31 10:27:59 2025