最終更新日時: 2025年07月10日 10時26分30秒 (JST)
Koichi Murase が更新

履歴 編集

# 入れ子名前空間定義でのインライン名前空間 [P1094R2](C++20)

このページはC++20に採用された言語機能の変更を解説しています。

のちのC++規格でさらに変更される場合があるため関連項目を参照してください。

## 概要

C++17で、入れ子の名前空間を`namespace ns1::ns2::ns3 {}`のように簡易的に定義できるようになったが、インライン名前空間の指定はできなかった。

C++20では、`namespace ns1::inline ns2::ns3 {}`のように、入れ子名前空間を一度に定義する場合でも一部の名前空間をインラインの指定をできるようにする。

以下の定義は、

    namespace ns1::inline ns2::ns3 {
      class X;
    }

以下と等価である：

    namespace ns1 {
    inline namespace ns2 {
    namespace ns3 {
      class X;
    }}}

## 関連項目

- C++11 インライン名前空間
- C++17 入れ子名前空間の定義

## 参照

- P1094R2 Nested Inline Namespaces