File tree Expand file tree Collapse file tree 1 file changed +47
-1
lines changed
include/boost/decimal/detail Expand file tree Collapse file tree 1 file changed +47
-1
lines changed Original file line number Diff line number Diff line change @@ -31,10 +31,56 @@ namespace boost {
3131namespace decimal {
3232namespace detail {
3333
34- # if !defined(BOOST_DECIMAL_NO_CONSTEVAL_DETECTION)
34+ namespace impl {
3535
3636#define BOOST_DECIMAL_CONSTEXPR constexpr
3737
38+ constexpr char * memcpy_impl (char * dest, const char * src, std::size_t count)
39+ {
40+ for (std::size_t i = 0 ; i < count; ++i)
41+ {
42+ dest[i] = src[i];
43+ }
44+
45+ return dest;
46+ }
47+
48+ constexpr char * memset_impl (char * dest, int ch, std::size_t count)
49+ {
50+ for (std::size_t i = 0 ; i < count; ++i)
51+ {
52+ dest[i] = static_cast <char >(ch);
53+ }
54+
55+ return dest;
56+ }
57+
58+ constexpr char * memmove_impl (char * dest, const char * src, std::size_t count)
59+ {
60+ if (dest < src || dest >= src + count)
61+ {
62+ // Non-overlapping or safe to copy forward
63+ for (std::size_t i = 0 ; i < count; ++i)
64+ {
65+ dest[i] = src[i];
66+ }
67+ }
68+ else
69+ {
70+ // Overlapping, copy backward to avoid overwriting source
71+ for (std::size_t i = count; i > 0 ; --i)
72+ {
73+ dest[i - 1 ] = src[i - 1 ];
74+ }
75+ }
76+
77+ return dest;
78+ }
79+
80+ }
81+
82+ #if !defined(BOOST_DECIMAL_NO_CONSTEVAL_DETECTION)
83+
3884BOOST_DECIMAL_CONSTEXPR char * memcpy (char * dest, const char * src, std::size_t count)
3985{
4086 if (BOOST_DECIMAL_IS_CONSTANT_EVALUATED (count))
You can’t perform that action at this time.
0 commit comments