定義の終わりまでです。使う必要があります(「列挙型」のページを参照)。enum宣言を行うことで、スコープ解決演算子を用いずに列挙名を使えるようになりました3。場合は、定義したスコープに準じます。テンプレート仮引数スコープは、宣言場所から、テンプレート関数やテンプレートクラスの終わりまでです。名前空間は、コードの集まりに対して名前を付ける機能です。どんな「集まり」にするかは自由ですが、何かしら共通の意味をもった集まりを作って、それと分かる名前空間名を与えるようにします。名前空間は、namespaceキーワードを使って次のように定義します。{}あとで取り上げますが、名前空間名のない名前空間を定義することもできます。囲まれた範囲が、「名前空間名」で指定した名前が付けられた名前空間になります。呼び、変数や関数の宣言や定義、型の定義が行えます。名前空間名に使用できる文字のルールは、変数名などと同様です(「定数式と識別子」のページを参照)。使うスネークケースにするものが見受けられますが、新C++編ではスネークケースで統一します。スネークケースを使っています4。言及がありませんが、コード例ではパスカルケースになっています。規格書のコードはパスカルケースになっています。名前空間は、ほかの名前空間の内側あるいは、どこにも囲まれていないところで定義できます。関数の本体の内側とか、構造体定義の内側のようなところには書けません。ほかの名前空間の内側に書いた場合、名前空間はネストしていることになります。名前空間の主目的は、名前の衝突を防ぐことにあります。同じ名前の変数や関数を宣言しても、所属する名前空間が異なれば、それはまったく別のものとして扱われます。隠蔽)}同名の名前空間を複数定義することができ、ソースコード上では離れた位置にあっても、同じ名前空間とみなされます。