mirror of
https://github.com/matrix-construct/construct
synced 2024-12-25 15:04:10 +01:00
ircd::string_view: Modernize constant evaluation comparisons.
This commit is contained in:
parent
cefcc75943
commit
527af013f7
1 changed files with 8 additions and 5 deletions
|
@ -16,13 +16,13 @@ namespace ircd
|
||||||
struct string_view;
|
struct string_view;
|
||||||
|
|
||||||
constexpr size_t _constexpr_strlen(const char *) noexcept;
|
constexpr size_t _constexpr_strlen(const char *) noexcept;
|
||||||
template<size_t N> constexpr size_t _constexpr_strlen(const char (&)[N]) noexcept;
|
template<size_t N> consteval size_t _constexpr_strlen(const char (&)[N]) noexcept;
|
||||||
|
|
||||||
constexpr bool _constexpr_equal(const char *a, const char *b) noexcept;
|
constexpr bool _constexpr_equal(const char *a, const char *b) noexcept;
|
||||||
constexpr bool _constexpr_equal(const char *a, const char *b, size_t) noexcept;
|
constexpr bool _constexpr_equal(const char *a, const char *b, size_t) noexcept;
|
||||||
constexpr bool _constexpr_equal(const char *a, const size_t, const char *b, const size_t) noexcept;
|
constexpr bool _constexpr_equal(const char *a, const size_t, const char *b, const size_t) noexcept;
|
||||||
constexpr bool _constexpr_equal(const string_view &, const string_view &) noexcept;
|
constexpr bool _constexpr_equal(const string_view &, const string_view &) noexcept;
|
||||||
template<size_t N0, size_t N1> constexpr bool _constexpr_equal(const char (&)[N0], const char (&)[N1]) noexcept;
|
template<size_t N0, size_t N1> consteval bool _constexpr_equal(const char (&)[N0], const char (&)[N1]) noexcept;
|
||||||
|
|
||||||
constexpr const char *data(const string_view &) noexcept;
|
constexpr const char *data(const string_view &) noexcept;
|
||||||
constexpr size_t size(const string_view &) noexcept;
|
constexpr size_t size(const string_view &) noexcept;
|
||||||
|
@ -327,7 +327,7 @@ noexcept
|
||||||
|
|
||||||
template<size_t N0,
|
template<size_t N0,
|
||||||
size_t N1>
|
size_t N1>
|
||||||
constexpr bool
|
consteval bool
|
||||||
ircd::_constexpr_equal(const char (&a)[N0],
|
ircd::_constexpr_equal(const char (&a)[N0],
|
||||||
const char (&b)[N1])
|
const char (&b)[N1])
|
||||||
noexcept
|
noexcept
|
||||||
|
@ -347,6 +347,9 @@ ircd::_constexpr_equal(const string_view &a,
|
||||||
const string_view &b)
|
const string_view &b)
|
||||||
noexcept
|
noexcept
|
||||||
{
|
{
|
||||||
|
if constexpr(__cplusplus >= 202002L)
|
||||||
|
return a == b;
|
||||||
|
else
|
||||||
return _constexpr_equal(data(a), size(a), data(b), size(b));
|
return _constexpr_equal(data(a), size(a), data(b), size(b));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -378,7 +381,7 @@ noexcept
|
||||||
}
|
}
|
||||||
|
|
||||||
template<size_t N>
|
template<size_t N>
|
||||||
constexpr size_t
|
consteval size_t
|
||||||
ircd::_constexpr_strlen(const char (&a)[N])
|
ircd::_constexpr_strlen(const char (&a)[N])
|
||||||
noexcept
|
noexcept
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue