// WARNING: Please don't edit this file. It was generated by C++/WinRT v2.0.240405.15 #pragma once #ifndef WINRT_Microsoft_UI_Input_DragDrop_H #define WINRT_Microsoft_UI_Input_DragDrop_H #include "winrt/base.h" static_assert(winrt::check_version(CPPWINRT_VERSION, "2.0.240405.15"), "Mismatched C++/WinRT headers."); #define CPPWINRT_VERSION "2.0.240405.15" #include "winrt/Microsoft.UI.Input.h" #include "winrt/impl/Microsoft.UI.Content.2.h" #include "winrt/impl/Microsoft.UI.Input.2.h" #include "winrt/impl/Windows.ApplicationModel.DataTransfer.2.h" #include "winrt/impl/Windows.Foundation.2.h" #include "winrt/impl/Windows.Graphics.Imaging.2.h" #include "winrt/impl/Microsoft.UI.Input.DragDrop.2.h" namespace winrt::impl { template auto consume_Microsoft_UI_Input_DragDrop_IDragDropManager::AreConcurrentOperationsEnabled() const { bool value{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragDropManager)->get_AreConcurrentOperationsEnabled(&value)); return value; } template auto consume_Microsoft_UI_Input_DragDrop_IDragDropManager::AreConcurrentOperationsEnabled(bool value) const { check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragDropManager)->put_AreConcurrentOperationsEnabled(value)); } template auto consume_Microsoft_UI_Input_DragDrop_IDragDropManager::TargetRequested(winrt::Windows::Foundation::TypedEventHandler const& handler) const { winrt::event_token token{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragDropManager)->add_TargetRequested(*(void**)(&handler), put_abi(token))); return token; } template auto consume_Microsoft_UI_Input_DragDrop_IDragDropManager::TargetRequested(auto_revoke_t, winrt::Windows::Foundation::TypedEventHandler const& handler) const { return impl::make_event_revoker(this, TargetRequested(handler)); } template auto consume_Microsoft_UI_Input_DragDrop_IDragDropManager::TargetRequested(winrt::event_token const& token) const noexcept { WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragDropManager)->remove_TargetRequested(impl::bind_in(token)); } template auto consume_Microsoft_UI_Input_DragDrop_IDragDropManagerStatics::GetForIsland(winrt::Microsoft::UI::Content::ContentIsland const& content) const { void* result{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragDropManagerStatics)->GetForIsland(*(void**)(&content), &result)); return winrt::Microsoft::UI::Input::DragDrop::DragDropManager{ result, take_ownership_from_abi }; } template auto consume_Microsoft_UI_Input_DragDrop_IDragInfo::AllowedOperations() const { winrt::Windows::ApplicationModel::DataTransfer::DataPackageOperation value{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragInfo)->get_AllowedOperations(reinterpret_cast(&value))); return value; } template auto consume_Microsoft_UI_Input_DragDrop_IDragInfo::Data() const { void* value{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragInfo)->get_Data(&value)); return winrt::Windows::ApplicationModel::DataTransfer::DataPackageView{ value, take_ownership_from_abi }; } template auto consume_Microsoft_UI_Input_DragDrop_IDragInfo::Modifiers() const { winrt::Microsoft::UI::Input::DragDrop::DragDropModifiers value{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragInfo)->get_Modifiers(reinterpret_cast(&value))); return value; } template auto consume_Microsoft_UI_Input_DragDrop_IDragInfo::Position() const { winrt::Windows::Foundation::Point value{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragInfo)->get_Position(put_abi(value))); return value; } template auto consume_Microsoft_UI_Input_DragDrop_IDragOperation::AllowedOperations() const { winrt::Windows::ApplicationModel::DataTransfer::DataPackageOperation value{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragOperation)->get_AllowedOperations(reinterpret_cast(&value))); return value; } template auto consume_Microsoft_UI_Input_DragDrop_IDragOperation::AllowedOperations(winrt::Windows::ApplicationModel::DataTransfer::DataPackageOperation const& value) const { check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragOperation)->put_AllowedOperations(static_cast(value))); } template auto consume_Microsoft_UI_Input_DragDrop_IDragOperation::Data() const { void* value{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragOperation)->get_Data(&value)); return winrt::Windows::ApplicationModel::DataTransfer::DataPackage{ value, take_ownership_from_abi }; } template auto consume_Microsoft_UI_Input_DragDrop_IDragOperation::DragUIContentMode() const { winrt::Microsoft::UI::Input::DragDrop::DragUIContentMode value{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragOperation)->get_DragUIContentMode(reinterpret_cast(&value))); return value; } template auto consume_Microsoft_UI_Input_DragDrop_IDragOperation::DragUIContentMode(winrt::Microsoft::UI::Input::DragDrop::DragUIContentMode const& value) const { check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragOperation)->put_DragUIContentMode(static_cast(value))); } template auto consume_Microsoft_UI_Input_DragDrop_IDragOperation::SetDragUIContentFromSoftwareBitmap(winrt::Windows::Graphics::Imaging::SoftwareBitmap const& bitmap) const { check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragOperation)->SetDragUIContentFromSoftwareBitmap(*(void**)(&bitmap))); } template auto consume_Microsoft_UI_Input_DragDrop_IDragOperation::SetDragUIContentFromSoftwareBitmap(winrt::Windows::Graphics::Imaging::SoftwareBitmap const& bitmap, winrt::Windows::Foundation::Point const& anchorPoint) const { check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragOperation)->SetDragUIContentFromSoftwareBitmap2(*(void**)(&bitmap), impl::bind_in(anchorPoint))); } template auto consume_Microsoft_UI_Input_DragDrop_IDragOperation::StartAsync(winrt::Microsoft::UI::Input::DragDrop::DragDropManager const& initialTarget, winrt::Microsoft::UI::Input::PointerPoint const& initialPointerPoint) const { void* operation{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragOperation)->StartAsync(*(void**)(&initialTarget), *(void**)(&initialPointerPoint), &operation)); return winrt::Windows::Foundation::IAsyncOperation{ operation, take_ownership_from_abi }; } template auto consume_Microsoft_UI_Input_DragDrop_IDragUIOverride::Caption() const { void* value{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragUIOverride)->get_Caption(&value)); return hstring{ value, take_ownership_from_abi }; } template auto consume_Microsoft_UI_Input_DragDrop_IDragUIOverride::Caption(param::hstring const& value) const { check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragUIOverride)->put_Caption(*(void**)(&value))); } template auto consume_Microsoft_UI_Input_DragDrop_IDragUIOverride::IsCaptionVisible() const { bool value{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragUIOverride)->get_IsCaptionVisible(&value)); return value; } template auto consume_Microsoft_UI_Input_DragDrop_IDragUIOverride::IsCaptionVisible(bool value) const { check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragUIOverride)->put_IsCaptionVisible(value)); } template auto consume_Microsoft_UI_Input_DragDrop_IDragUIOverride::IsContentVisible() const { bool value{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragUIOverride)->get_IsContentVisible(&value)); return value; } template auto consume_Microsoft_UI_Input_DragDrop_IDragUIOverride::IsContentVisible(bool value) const { check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragUIOverride)->put_IsContentVisible(value)); } template auto consume_Microsoft_UI_Input_DragDrop_IDragUIOverride::IsGlyphVisible() const { bool value{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragUIOverride)->get_IsGlyphVisible(&value)); return value; } template auto consume_Microsoft_UI_Input_DragDrop_IDragUIOverride::IsGlyphVisible(bool value) const { check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragUIOverride)->put_IsGlyphVisible(value)); } template auto consume_Microsoft_UI_Input_DragDrop_IDragUIOverride::Clear() const { check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragUIOverride)->Clear()); } template auto consume_Microsoft_UI_Input_DragDrop_IDragUIOverride::SetContentFromSoftwareBitmap(winrt::Windows::Graphics::Imaging::SoftwareBitmap const& bitmap) const { check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragUIOverride)->SetContentFromSoftwareBitmap(*(void**)(&bitmap))); } template auto consume_Microsoft_UI_Input_DragDrop_IDragUIOverride::SetContentFromSoftwareBitmap(winrt::Windows::Graphics::Imaging::SoftwareBitmap const& bitmap, winrt::Windows::Foundation::Point const& anchorPoint) const { check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDragUIOverride)->SetContentFromSoftwareBitmap2(*(void**)(&bitmap), impl::bind_in(anchorPoint))); } template auto consume_Microsoft_UI_Input_DragDrop_IDropOperationTarget::DropAsync(winrt::Microsoft::UI::Input::DragDrop::DragInfo const& dragInfo) const { void* operation{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDropOperationTarget)->DropAsync(*(void**)(&dragInfo), &operation)); return winrt::Windows::Foundation::IAsyncOperation{ operation, take_ownership_from_abi }; } template auto consume_Microsoft_UI_Input_DragDrop_IDropOperationTarget::EnterAsync(winrt::Microsoft::UI::Input::DragDrop::DragInfo const& dragInfo, winrt::Microsoft::UI::Input::DragDrop::DragUIOverride const& dragUIOverride) const { void* operation{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDropOperationTarget)->EnterAsync(*(void**)(&dragInfo), *(void**)(&dragUIOverride), &operation)); return winrt::Windows::Foundation::IAsyncOperation{ operation, take_ownership_from_abi }; } template auto consume_Microsoft_UI_Input_DragDrop_IDropOperationTarget::LeaveAsync(winrt::Microsoft::UI::Input::DragDrop::DragInfo const& dragInfo) const { void* operation{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDropOperationTarget)->LeaveAsync(*(void**)(&dragInfo), &operation)); return winrt::Windows::Foundation::IAsyncAction{ operation, take_ownership_from_abi }; } template auto consume_Microsoft_UI_Input_DragDrop_IDropOperationTarget::OverAsync(winrt::Microsoft::UI::Input::DragDrop::DragInfo const& dragInfo, winrt::Microsoft::UI::Input::DragDrop::DragUIOverride const& dragUIOverride) const { void* operation{}; check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDropOperationTarget)->OverAsync(*(void**)(&dragInfo), *(void**)(&dragUIOverride), &operation)); return winrt::Windows::Foundation::IAsyncOperation{ operation, take_ownership_from_abi }; } template auto consume_Microsoft_UI_Input_DragDrop_IDropOperationTargetRequestedEventArgs::SetTarget(winrt::Microsoft::UI::Input::DragDrop::IDropOperationTarget const& target) const { check_hresult(WINRT_IMPL_SHIM(winrt::Microsoft::UI::Input::DragDrop::IDropOperationTargetRequestedEventArgs)->SetTarget(*(void**)(&target))); } #ifndef WINRT_LEAN_AND_MEAN template struct produce : produce_base { int32_t __stdcall get_AreConcurrentOperationsEnabled(bool* value) noexcept final try { typename D::abi_guard guard(this->shim()); *value = detach_from(this->shim().AreConcurrentOperationsEnabled()); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall put_AreConcurrentOperationsEnabled(bool value) noexcept final try { typename D::abi_guard guard(this->shim()); this->shim().AreConcurrentOperationsEnabled(value); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall add_TargetRequested(void* handler, winrt::event_token* token) noexcept final try { zero_abi(token); typename D::abi_guard guard(this->shim()); *token = detach_from(this->shim().TargetRequested(*reinterpret_cast const*>(&handler))); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall remove_TargetRequested(winrt::event_token token) noexcept final { typename D::abi_guard guard(this->shim()); this->shim().TargetRequested(*reinterpret_cast(&token)); return 0; } }; #endif #ifndef WINRT_LEAN_AND_MEAN template struct produce : produce_base { int32_t __stdcall GetForIsland(void* content, void** result) noexcept final try { clear_abi(result); typename D::abi_guard guard(this->shim()); *result = detach_from(this->shim().GetForIsland(*reinterpret_cast(&content))); return 0; } catch (...) { return to_hresult(); } }; #endif #ifndef WINRT_LEAN_AND_MEAN template struct produce : produce_base { int32_t __stdcall get_AllowedOperations(uint32_t* value) noexcept final try { typename D::abi_guard guard(this->shim()); *value = detach_from(this->shim().AllowedOperations()); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall get_Data(void** value) noexcept final try { clear_abi(value); typename D::abi_guard guard(this->shim()); *value = detach_from(this->shim().Data()); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall get_Modifiers(uint32_t* value) noexcept final try { typename D::abi_guard guard(this->shim()); *value = detach_from(this->shim().Modifiers()); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall get_Position(winrt::Windows::Foundation::Point* value) noexcept final try { zero_abi(value); typename D::abi_guard guard(this->shim()); *value = detach_from(this->shim().Position()); return 0; } catch (...) { return to_hresult(); } }; #endif #ifndef WINRT_LEAN_AND_MEAN template struct produce : produce_base { int32_t __stdcall get_AllowedOperations(uint32_t* value) noexcept final try { typename D::abi_guard guard(this->shim()); *value = detach_from(this->shim().AllowedOperations()); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall put_AllowedOperations(uint32_t value) noexcept final try { typename D::abi_guard guard(this->shim()); this->shim().AllowedOperations(*reinterpret_cast(&value)); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall get_Data(void** value) noexcept final try { clear_abi(value); typename D::abi_guard guard(this->shim()); *value = detach_from(this->shim().Data()); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall get_DragUIContentMode(int32_t* value) noexcept final try { typename D::abi_guard guard(this->shim()); *value = detach_from(this->shim().DragUIContentMode()); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall put_DragUIContentMode(int32_t value) noexcept final try { typename D::abi_guard guard(this->shim()); this->shim().DragUIContentMode(*reinterpret_cast(&value)); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall SetDragUIContentFromSoftwareBitmap(void* bitmap) noexcept final try { typename D::abi_guard guard(this->shim()); this->shim().SetDragUIContentFromSoftwareBitmap(*reinterpret_cast(&bitmap)); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall SetDragUIContentFromSoftwareBitmap2(void* bitmap, winrt::Windows::Foundation::Point anchorPoint) noexcept final try { typename D::abi_guard guard(this->shim()); this->shim().SetDragUIContentFromSoftwareBitmap(*reinterpret_cast(&bitmap), *reinterpret_cast(&anchorPoint)); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall StartAsync(void* initialTarget, void* initialPointerPoint, void** operation) noexcept final try { clear_abi(operation); typename D::abi_guard guard(this->shim()); *operation = detach_from>(this->shim().StartAsync(*reinterpret_cast(&initialTarget), *reinterpret_cast(&initialPointerPoint))); return 0; } catch (...) { return to_hresult(); } }; #endif #ifndef WINRT_LEAN_AND_MEAN template struct produce : produce_base { int32_t __stdcall get_Caption(void** value) noexcept final try { clear_abi(value); typename D::abi_guard guard(this->shim()); *value = detach_from(this->shim().Caption()); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall put_Caption(void* value) noexcept final try { typename D::abi_guard guard(this->shim()); this->shim().Caption(*reinterpret_cast(&value)); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall get_IsCaptionVisible(bool* value) noexcept final try { typename D::abi_guard guard(this->shim()); *value = detach_from(this->shim().IsCaptionVisible()); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall put_IsCaptionVisible(bool value) noexcept final try { typename D::abi_guard guard(this->shim()); this->shim().IsCaptionVisible(value); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall get_IsContentVisible(bool* value) noexcept final try { typename D::abi_guard guard(this->shim()); *value = detach_from(this->shim().IsContentVisible()); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall put_IsContentVisible(bool value) noexcept final try { typename D::abi_guard guard(this->shim()); this->shim().IsContentVisible(value); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall get_IsGlyphVisible(bool* value) noexcept final try { typename D::abi_guard guard(this->shim()); *value = detach_from(this->shim().IsGlyphVisible()); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall put_IsGlyphVisible(bool value) noexcept final try { typename D::abi_guard guard(this->shim()); this->shim().IsGlyphVisible(value); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall Clear() noexcept final try { typename D::abi_guard guard(this->shim()); this->shim().Clear(); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall SetContentFromSoftwareBitmap(void* bitmap) noexcept final try { typename D::abi_guard guard(this->shim()); this->shim().SetContentFromSoftwareBitmap(*reinterpret_cast(&bitmap)); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall SetContentFromSoftwareBitmap2(void* bitmap, winrt::Windows::Foundation::Point anchorPoint) noexcept final try { typename D::abi_guard guard(this->shim()); this->shim().SetContentFromSoftwareBitmap(*reinterpret_cast(&bitmap), *reinterpret_cast(&anchorPoint)); return 0; } catch (...) { return to_hresult(); } }; #endif template struct produce : produce_base { int32_t __stdcall DropAsync(void* dragInfo, void** operation) noexcept final try { clear_abi(operation); typename D::abi_guard guard(this->shim()); *operation = detach_from>(this->shim().DropAsync(*reinterpret_cast(&dragInfo))); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall EnterAsync(void* dragInfo, void* dragUIOverride, void** operation) noexcept final try { clear_abi(operation); typename D::abi_guard guard(this->shim()); *operation = detach_from>(this->shim().EnterAsync(*reinterpret_cast(&dragInfo), *reinterpret_cast(&dragUIOverride))); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall LeaveAsync(void* dragInfo, void** operation) noexcept final try { clear_abi(operation); typename D::abi_guard guard(this->shim()); *operation = detach_from(this->shim().LeaveAsync(*reinterpret_cast(&dragInfo))); return 0; } catch (...) { return to_hresult(); } int32_t __stdcall OverAsync(void* dragInfo, void* dragUIOverride, void** operation) noexcept final try { clear_abi(operation); typename D::abi_guard guard(this->shim()); *operation = detach_from>(this->shim().OverAsync(*reinterpret_cast(&dragInfo), *reinterpret_cast(&dragUIOverride))); return 0; } catch (...) { return to_hresult(); } }; #ifndef WINRT_LEAN_AND_MEAN template struct produce : produce_base { int32_t __stdcall SetTarget(void* target) noexcept final try { typename D::abi_guard guard(this->shim()); this->shim().SetTarget(*reinterpret_cast(&target)); return 0; } catch (...) { return to_hresult(); } }; #endif } WINRT_EXPORT namespace winrt::Microsoft::UI::Input::DragDrop { constexpr auto operator|(DragDropModifiers const left, DragDropModifiers const right) noexcept { return static_cast(impl::to_underlying_type(left) | impl::to_underlying_type(right)); } constexpr auto operator|=(DragDropModifiers& left, DragDropModifiers const right) noexcept { left = left | right; return left; } constexpr auto operator&(DragDropModifiers const left, DragDropModifiers const right) noexcept { return static_cast(impl::to_underlying_type(left) & impl::to_underlying_type(right)); } constexpr auto operator&=(DragDropModifiers& left, DragDropModifiers const right) noexcept { left = left & right; return left; } constexpr auto operator~(DragDropModifiers const value) noexcept { return static_cast(~impl::to_underlying_type(value)); } constexpr auto operator^(DragDropModifiers const left, DragDropModifiers const right) noexcept { return static_cast(impl::to_underlying_type(left) ^ impl::to_underlying_type(right)); } constexpr auto operator^=(DragDropModifiers& left, DragDropModifiers const right) noexcept { left = left ^ right; return left; } inline auto DragDropManager::GetForIsland(winrt::Microsoft::UI::Content::ContentIsland const& content) { return impl::call_factory([&](IDragDropManagerStatics const& f) { return f.GetForIsland(content); }); } inline DragOperation::DragOperation() : DragOperation(impl::call_factory_cast([](winrt::Windows::Foundation::IActivationFactory const& f) { return f.template ActivateInstance(); })) { } } namespace std { #ifndef WINRT_LEAN_AND_MEAN template<> struct hash : winrt::impl::hash_base {}; template<> struct hash : winrt::impl::hash_base {}; template<> struct hash : winrt::impl::hash_base {}; template<> struct hash : winrt::impl::hash_base {}; template<> struct hash : winrt::impl::hash_base {}; template<> struct hash : winrt::impl::hash_base {}; template<> struct hash : winrt::impl::hash_base {}; template<> struct hash : winrt::impl::hash_base {}; template<> struct hash : winrt::impl::hash_base {}; template<> struct hash : winrt::impl::hash_base {}; template<> struct hash : winrt::impl::hash_base {}; template<> struct hash : winrt::impl::hash_base {}; #endif #ifdef __cpp_lib_format #endif } #endif