std::inout_...torPointer*,(3)
π std::inout_...torPointer*,(3) π
okay so bestie, welcome to the C++ Standard Libary page for std::inout_...torPointer*,(3). The title is giving keyboard-smash realness, but the content is extremely specific pointer-conversion business, and honestly? We respect it. π«Άβ¨
π NAME π
std::inout_ptr_t::operatorPointer*, -
std::inout_ptr_t::operatorPointer*,
π¦ Synopsis π¦
operator Pointer*() const noexcept; (1) (since C++23)
operator void**() const noexcept; (2) (since C++23)
These functions expose the address of a Pointer or void* object to a foreign function which will generally release the ownership represented by its value and then re-initialize it. No cap, that's the whole plot.
- Converts
*thisto the address of the storedPointerobject. π - Converts
*thisto the address of avoid*object. This conversion function participates in overload resolution only ifPointeris not same asvoid*, and the program is ill-formed ifPointeris not a pointer type. The initial value of thevoid*object is equal to the value of the storedPointerobject converted tovoid*, and any modification to it affects thePointervalue used in the destructor.
UB alert: accessing thevoid*object outside the lifetime of*thishas undefined behavior. Do not do that, bestie β literally do not. π
Once one of these two conversion functions has been called on an inout_ptr_t object, the other shall not be called on it, otherwise the behavior is undefined. Pick one and commit, periodt. π
πΈ Parameters πΈ
(none) β yes, literally none.
π Return value π
- The address of the stored
Pointerobject. - The address of the
void*object that satisfies aforementioned requirements.
β¨ Notes β¨
If the object pointed by the return value has not been rewritten, it is equal to the value held by adapted Smart object before construction.
On common implementations, the object representation of every Pointer that is a pointer type is compatible with that of void*, and therefore these implementations typically store the void* object within the storage for the Pointer object, no additional storage needed:
- If the implementation enables type-based alias analysis (which relies on the strict aliasing rule), a properly aligned
std::byte[sizeof(void*)]member subobject may be used, and both conversion functions return the address of objects implicitly created within the array. - Otherwise, a
Pointermember subobject may be used for both conversion functions, and (2) may directly returns its addressreinterpret_cast to void**.
If Pointer is a pointer type whose object representation is incompatible with that of void*, an additional bool flag may be needed for recording whether (1) (or (2)) has been called. π§
π Example π
This section is incomplete.
Reason: no example.
ngl, the example slot is empty. It's giving unfinished homework, but we move. π
π·οΈ Category:
- Todo no example
source/version and date check, bestie: this page comes from http://cppreference.com, dated 2024.06.10, and it's page std::inout_...torPointer*,(3). Mwah πβ¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms