C++/WinRT 名前付け規則

C++/WinRT では、次の名前付け規則が決められています。

  • winrt::impl 名前空間は、C++/WinRT のために予約されているので、アプリケーションには使用しないでください。
  • winrt 名前空間では、小文字で始まる名前は、C++/WinRT に属しますが、アプリケーション内で使用することもできます。 このドキュメントには、オーバーロードや特殊化が可能な名前が記載されています。 たとえば、アプリケーションから winrt::is_guid_of 関数テンプレートを特殊化することができます。
  • winrt 名前空間 (winrt::impl を除く) のサブ名前空間では、大文字で始まる名前をアプリケーションに使用できます。
  • すべての名前空間で、WINRT_IMPL_ で始まる名前は C++/WinRT 用に予約されているので、アプリケーションには使用しないでください。
  • すべての名前空間で、WINRT_ で始まる名前 (WINRT_IMPL_で始まる名前を除く) は C++/WinRT 用に予約されています。 これらを使用することもできます。このドキュメントでは、WINRT_LEAN_AND_MEAN のように、アプリケーションによって定義された名前を呼び出しています。

アプリケーションから名前空間の構成を行い、winrt ルート名前空間のサブ名前空間を winrt ルート名前空間にインポートするのが一般的です。

namespace winrt
{
    using namespace winrt::Windows::Foundation;
}

そのため、アプリケーションは、winrt 名前空間のサブ名前空間で上記の名前付け規則に従う必要があります。

次に概要を示します。

名前空間 名前 アプリによって定義可能 アプリによって使用可能
winrt::impl Any いいえ いいえ
winrt とサブ名前空間 (impl を除く) 小文字で始まります いいえ はい
winrt とサブ名前空間 (impl を除く) 大文字で始まります はい はい
Any WINRT_IMPL_* いいえ いいえ
Any WINRT_* (WINRT_IMPL_* を除く) ケースバイケース はい