From 7d7b8273bf41693af273e5dc253f6fa75c52e10f Mon Sep 17 00:00:00 2001 From: justanotheranonymoususer Date: Wed, 7 Jan 2026 14:32:57 +0200 Subject: [PATCH 1/3] Remove implicit hstring constructor for string_view Fixes #1527 --- strings/base_string_input.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/strings/base_string_input.h b/strings/base_string_input.h index 8cfea212b..e446e3029 100644 --- a/strings/base_string_input.h +++ b/strings/base_string_input.h @@ -18,9 +18,9 @@ WINRT_EXPORT namespace winrt::param { } - hstring(std::wstring_view const& value) noexcept + hstring(wchar_t const* const value, size_t size) noexcept { - create_string_reference(value.data(), value.size()); + create_string_reference(value, size); } hstring(std::wstring const& value) noexcept From 8dc471a6a469202a888694fcaa113fabbeb69484 Mon Sep 17 00:00:00 2001 From: justanotheranonymoususer Date: Thu, 8 Jan 2026 11:57:53 +0200 Subject: [PATCH 2/3] Delete ptr+size constructor --- strings/base_string_input.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/strings/base_string_input.h b/strings/base_string_input.h index e446e3029..d8a847761 100644 --- a/strings/base_string_input.h +++ b/strings/base_string_input.h @@ -18,11 +18,6 @@ WINRT_EXPORT namespace winrt::param { } - hstring(wchar_t const* const value, size_t size) noexcept - { - create_string_reference(value, size); - } - hstring(std::wstring const& value) noexcept { create_string_reference(value.data(), value.size()); From af9103d8ba65c4b4c8b6d9a9330e2c8eb54201a2 Mon Sep 17 00:00:00 2001 From: justanotheranonymoususer Date: Thu, 8 Jan 2026 21:10:52 +0200 Subject: [PATCH 3/3] Try to fix --- cppwinrt/component_writers.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cppwinrt/component_writers.h b/cppwinrt/component_writers.h index cb748917d..8d855ebe1 100644 --- a/cppwinrt/component_writers.h +++ b/cppwinrt/component_writers.h @@ -149,9 +149,9 @@ bool __stdcall %_can_unload_now() noexcept return true; } -void* __stdcall %_get_activation_factory([[maybe_unused]] std::wstring_view const& name) +void* __stdcall %_get_activation_factory([[maybe_unused]] winrt::hstring const& name) { - auto requal = [](std::wstring_view const& left, std::wstring_view const& right) noexcept + auto requal = [](winrt::hstring const& left, winrt::hstring const& right) noexcept { return std::equal(left.rbegin(), left.rend(), right.rbegin(), right.rend()); }; @@ -189,7 +189,7 @@ int32_t __stdcall WINRT_CanUnloadNow() noexcept int32_t __stdcall WINRT_GetActivationFactory(void* classId, void** factory) noexcept try { - std::wstring_view const name{ *reinterpret_cast(&classId) }; + winrt::hstring& const name{ *reinterpret_cast(&classId) }; *factory = %_get_activation_factory(name); if (*factory)