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 名前空間のサブ名前空間で上記の名前付け規則に従う必要があります。

概要を次に示します。

名前空間 Name アプリでは、次の定義が可能です。 アプリは使用する場合があります
winrt::impl Any No No
winrt 名前空間とサブ名前空間 ( impl を除く) 小文字で始まる No Yes
winrt 名前空間とサブ名前空間 ( impl を除く) 大文字で始まる Yes Yes
Any WINRT_IMPL_* No No
Any WINRT_* ( WINRT_IMPL_*を除く) Case-by-case Yes