voidify
From cppreference.com
template< class T >
void* /*voidify*/( T& obj ) noexcept;
|
(exposition only*) (constexpr since C++17) |
|
Returns the address of obj (implicitly converted to void*).
Parameters
| obj | - | the object whose address will be taken |
Return value
|
|
(until C++11) |
|
|
(since C++11) |
Notes
This exposition-only function template is introduced by P0896R4. It is used to describe the effects of specialized <memory> algorithms. The result pointer is used as the placement-params of a placement new expression.
Initially, the return value was const_cast<void*>(static_cast<const volatile void*>(std::addressof(obj))), which breaks const-correctness. The explicit casts were removed by the resolution of LWG issue 3870, and the only conversion left is the implicit conversion to void*.
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3870 | C++98 | the explicit casts broke const-correctness | removed these casts |
See also
(C++20) |
creates an object at a given address (function template & algorithm function object) |
(C++20) |
|
| copies a range of objects to an uninitialized area of memory (function template & algorithm function object) | |
(C++20) |
|
(C++11) |
copies a number of objects to an uninitialized area of memory (function template & algorithm function object) |
(C++20) |
|
| copies an object to an uninitialized area of memory, defined by a range (function template & algorithm function object) | |
(C++20) |
|
| copies an object to an uninitialized area of memory, defined by a start and a count (function template & algorithm function object) | |
(C++20) |
|
(C++17) |
moves a range of objects to an uninitialized area of memory (function template & algorithm function object) |
(C++20) |
|
(C++17) |
moves a number of objects to an uninitialized area of memory (function template & algorithm function object) |
(C++20) |
| constructs objects by default-initialization in an uninitialized area of memory, defined by a range (function template & algorithm function object) | |
| constructs objects by default-initialization in an uninitialized area of memory, defined by a start and a count (function template & algorithm function object) | |
| constructs objects by value-initialization in an uninitialized area of memory, defined by a range (function template & algorithm function object) | |
| constructs objects by value-initialization in an uninitialized area of memory, defined by a start and a count (function template & algorithm function object) | |