Соглашения об именовании 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.

Вот сводка.

Namespace 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