Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
c_namespaces [2018/02/01 11:03] – [Nested namespaces] rpjdayc_namespaces [2018/02/01 14:50] (current) – [using-Directives] rpjday
Line 41: Line 41:
 namespace ATT = American_Telephone_and_Telegraph; // namespace alias namespace ATT = American_Telephone_and_Telegraph; // namespace alias
 </code> </code>
 +
 +Also, namespace identifier is "... either a previously unused identifier, in which case this is //original-namespace-definition// or the name of a namespace, in which case this is //extension-namespace-definition//."
  
 ===== Extensibility (namespaces are "open") ===== ===== Extensibility (namespaces are "open") =====
Line 70: Line 72:
  
 ==== using-Declarations ==== ==== using-Declarations ====
 +
 +Read [[http://en.cppreference.com/w/cpp/language/namespace#Using-declarations|this]] carefully.
  
 "makes the symbol name from the namespace ns_name accessible for unqualified lookup as if declared in the same class scope, block scope, or namespace as where this using-declaration appears." "makes the symbol name from the namespace ns_name accessible for unqualified lookup as if declared in the same class scope, block scope, or namespace as where this using-declaration appears."
Line 91: Line 95:
 } }
 </code> </code>
 +
 +Useful for introducing base class members into derived class definitions.
  
 ==== using-Directives ==== ==== using-Directives ====
 +
 +cppreference.com link [[http://en.cppreference.com/w/cpp/language/namespace#Using-directives|here]].
  
 "From the point of view of unqualified name lookup of any name after a using-directive and until the end of the scope in which it appears, every name from ns_name is visible as if it were declared in the nearest enclosing namespace which contains both the using-directive and ns_name." "From the point of view of unqualified name lookup of any name after a using-directive and until the end of the scope in which it appears, every name from ns_name is visible as if it were declared in the nearest enclosing namespace which contains both the using-directive and ns_name."
Line 278: Line 286:
 ===== Unnamed namespaces ===== ===== Unnamed namespaces =====
  
-Its members have potential scope from their point of declaration to the end of the translation unit, and have internal linkage.+Its members have potential scope from their point of declaration to the end of the translation unit, and have //internal// linkage. The aim is to preserve locality of code rather than to present an interface to users. 
 + 
 +<code> 
 +#include "header.h" 
 +namespace { 
 +  int a; 
 +  void f()  {...} 
 +  int g()   {...} 
 +
 +</code> 
 + 
 +An unnamed namespace has an implied using-directive.
  
 +"Unnamed namespaces in different translation units are different. As desired, there is no way of naming a member of an unnamed namespace from another translation unit."
 ===== Argument dependent lookup (ADL) ===== ===== Argument dependent lookup (ADL) =====
  
  • c_namespaces.1517483036.txt.gz
  • Last modified: 2018/02/01 11:03
  • by rpjday