Created on 2024-04-05.00:00:00 last changed yesterday
Proposed resolution:
This wording is relative to N4981.
Modify [cstring.syn] as indicated:
-3- The functions memcpy and memmove are signal-safe ([support.signal]).
BothEach of these functions implicitlycreatecreates objects ([intro.object]) in the destination region of storage immediately prior to copying the sequence of characters to the destination. Each of these functions returns a pointer to a suitable created object, if any, otherwise the value of the first parameter.
[ Wrocław 2024-11-18; approved by Core (again) ]
[ St. Louis 2024-06-28; LWG: move to Ready ]
[ St. Louis 2024-06-26; CWG suggested improved wording ]
[ 2024-06-24; Reflector poll ]
Set priority to 3 after reflector poll.
This wording is relative to N4971.
Modify [cstring.syn] as indicated:
-3- The functions memcpy and memmove are signal-safe ([support.signal]). Both functions implicitly create objects ([intro.object]) in the destination region of storage immediately prior to copying the sequence of characters to the destination. Both functions return a pointer to a suitable created object.
int x = 0; alignas(int) std::byte y[sizeof(int)]; int z = *static_cast<int*>(std::memcpy(y, &x, sizeof(int)));
This example should be well-defined, even without the use of std::launder. std::memcpy implicitly creates an int inside y, and https://www.iso-9899.info/n3047.html#7.26.2.1p3 states that
The memcpy function returns the value of [the destination operand].
In conjunction with [cstring.syn] p3, this presumably means that std::memcpy returns a pointer to the (first) implicitly-created object, and no use of std::launder is necessary.
The wording should be clarified to clearly support this interpretation or reject it.History | |||
---|---|---|---|
Date | User | Action | Args |
2024-11-19 16:09:07 | admin | set | messages: + msg14457 |
2024-11-19 16:09:07 | admin | set | status: ready -> voting |
2024-06-28 22:21:53 | admin | set | messages: + msg14224 |
2024-06-28 22:21:53 | admin | set | status: open -> ready |
2024-06-26 20:44:45 | admin | set | messages: + msg14217 |
2024-06-26 20:44:45 | admin | set | status: new -> open |
2024-06-24 12:43:36 | admin | set | messages: + msg14195 |
2024-04-05 12:16:18 | admin | set | messages: + msg14053 |
2024-04-05 00:00:00 | admin | create |