winrt::detach_abi function (C++/WinRT)

A helper function that detaches a C++/WinRT object from its referenced handle, or from its referenced interface. Detaching from an interface is done without decrementing the reference count, perhaps to return it to a caller. For more info, and code examples, see Interop between C++/WinRT and the ABI.


template <typename T, typename = std::enable_if_t<!std::is_base_of_v<winrt::Windows::Foundation::IUnknown, std::decay_t<T>> && !std::is_convertible_v<T, std::wstring_view>>>
auto detach_abi(T&& object);

void* detach_abi(winrt::Windows::Foundation::IUnknown& object) noexcept

void* detach_abi(winrt::Windows::Foundation::IUnknown&& object) noexcept

constexpr void* detach_abi(std::nullptr_t) noexcept

template <typename T>
auto detach_abi(winrt::com_ptr<T>& object) noexcept

HSTRING detach_abi(winrt::hstring& object) noexcept

HSTRING detach_abi(winrt::hstring&& object) noexcept

HSTRING detach_abi(std::wstring_view const& value)

template <typename T>
auto detach_abi(winrt::com_array<T>& object) noexcept

template <typename T>
auto detach_abi(winrt::com_array<T>&& object) noexcept


object A C++/WinRT object to operate on.

Return value

The handle, or a pointer to the raw interface, referenced by the C++/WinRT object.


Minimum supported SDK: Windows SDK version 10.0.17134.0 (Windows 10, version 1803)

Namespace: winrt

Header %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (included by default)

See also