Рассмотрим следующий выдержка из wg21.link/p0593:>>
Вызов Memmove ведет себя так, как если бы он < /p>
копирует хранилище источника во временную область < /p>
< /li>
< /p>
< /li>
. хранение, а затем < /p>
< /li>
копирует временное хранилище в хранилище назначения. < /p>
< /li>
< /ul>
Это позволяет мемов сохранить типы видов объекта, которые могут быть представлены, которые используют другие объекты. Object. < /p>
< /blockquote>
struct A { int n; };
auto a = A{1};
void* p1 = &a;
alignas(A) char buf[8];
// p1 is of void*, so it shouldn't be assumed pointing to an object of A.
auto p2 = static_cast(memmove(buf, p1, sizeof(A)));
p2->n = 2; // Is this technically UB since C++20?
auto fn = [&] { return memmove(buf, p1, sizeof(A)); };
// Must it be `auto p3 = std::start_lifetime_as(fn());` here?
auto p3 = static_cast(fn()); // fn is not blessed by the standard as memmove.
p3->n = 3; // Is this technically UB since C++20?
Подробнее здесь: https://stackoverflow.com/questions/796 ... izeofsrc-s
Технически ли это UB к static_cast (memmove (dst, (void*) src, sizeof (src))) с C ++ 20? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Технически ли это UB к static_cast (memmove (dst, (void*) src, sizeof (src))) с C ++ 20?
Anonymous » » в форуме C++ - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Технически ли это UB к static_cast (memmove (dst, (void*) src, sizeof (src))) с C ++ 20?
Anonymous » » в форуме C++ - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Технически ли это UB к static_cast (memmove (dst, (void*) src, sizeof (src))) с C ++ 20?
Anonymous » » в форуме C++ - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-