diff --git a/test/constexpr_tests.hpp b/test/constexpr_tests.hpp index c748ec7..ca72ccc 100644 --- a/test/constexpr_tests.hpp +++ b/test/constexpr_tests.hpp @@ -69,12 +69,15 @@ struct cxper_char_traits static constexpr char_type* move(char_type* dest, const char_type* src, std::size_t n) { - if (detail::ptr_in_range(src, src + n, dest)) - { - while (n--) - assign(dest[n], src[n]); - return dest; - } + // This implementation does not handle overlapping ranges where + // dest > src. A correct implementation would need to detect this + // case and copy backwards, but detecting overlap requires pointer + // comparisons that many of the tested compiles (incorrectly) refuse + // in constant expressions. + // + // Since cxper_char_traits is only used for testing constexpr + // functionality and the tests do not exercise overlapping moves + // where dest > src, this simple forward copy is sufficient. return copy(dest, src, n); }