Skip to content

Commit 9ebeb9c

Browse files
author
marco
committed
refactor: memcpy -> std::ranges::copy
I think there is no issue of passing a nullptr here, but it makes sense to use the std-lib copy for consistency. Recommended in #305 (review)
1 parent 26341f3 commit 9ebeb9c

2 files changed

Lines changed: 9 additions & 4 deletions

File tree

include/mp/type-char.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77

88
#include <mp/util.h>
99

10+
#include <algorithm>
11+
#include <ranges>
12+
1013
namespace mp {
1114
template <typename Output, size_t size>
1215
void CustomBuildField(TypeList<const unsigned char*>,
@@ -16,7 +19,7 @@ void CustomBuildField(TypeList<const unsigned char*>,
1619
Output&& output)
1720
{
1821
auto result = output.init(size);
19-
memcpy(result.begin(), value, size);
22+
std::ranges::copy(value, result.begin());
2023
}
2124

2225
template <size_t size, typename Input, typename ReadDest>
@@ -27,8 +30,7 @@ decltype(auto) CustomReadField(TypeList<unsigned char[size]>,
2730
ReadDest&& read_dest)
2831
{
2932
return read_dest.update([&](auto& value) {
30-
auto data = input.get();
31-
memcpy(value, data.begin(), size);
33+
std::ranges::copy(input.get(), std::ranges::begin(value));
3234
});
3335
}
3436
} // namespace mp

include/mp/type-string.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77

88
#include <mp/util.h>
99

10+
#include <algorithm>
11+
#include <ranges>
12+
1013
namespace mp {
1114
template <typename Value, typename Output>
1215
void CustomBuildField(TypeList<std::string>,
@@ -16,7 +19,7 @@ void CustomBuildField(TypeList<std::string>,
1619
Output&& output)
1720
{
1821
auto result = output.init(value.size());
19-
memcpy(result.begin(), value.data(), value.size());
22+
std::ranges::copy(value, result.begin());
2023
}
2124

2225
template <typename Input, typename ReadDest>

0 commit comments

Comments
 (0)