Skip to content

<algorithm>: std::uninitialized_copy used memmove instead of memcpy #6029

@TymianekPL

Description

@TymianekPL

Describe the bug

std::uninitialized_copy uses memmove instead of memcpy. This is a codegen issue. memcpy is faster as it is an intrinsic.

Command-line test case

C:\Temp>type repro.cpp
#include <iostream>
struct thirtytwo {
    char bytes[32];
};

void f(thirtytwo& target, const thirtytwo& source) {
    std::uninitialized_copy(std::begin(source.bytes), std::end(source.bytes), std::begin(target.bytes));
}

Expected behavior

memcpy

Additional context

Discussed in MSVC STL discord server in #stl

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions