|
@@ -243,7 +243,7 @@ char_traits<char>::compare(const char_type* __s1, const char_type* __s2, size_t
|
|
{
|
|
{
|
|
if (__n == 0)
|
|
if (__n == 0)
|
|
return 0;
|
|
return 0;
|
|
-#ifdef _LIBCPP_BUILTIN_MEMCMP_ISCONSTEXPR
|
|
|
|
|
|
+#if __has_feature(cxx_constexpr_string_builtins)
|
|
return __builtin_memcmp(__s1, __s2, __n);
|
|
return __builtin_memcmp(__s1, __s2, __n);
|
|
#elif _LIBCPP_STD_VER <= 14
|
|
#elif _LIBCPP_STD_VER <= 14
|
|
return memcmp(__s1, __s2, __n);
|
|
return memcmp(__s1, __s2, __n);
|
|
@@ -265,7 +265,9 @@ char_traits<char>::find(const char_type* __s, size_t __n, const char_type& __a)
|
|
{
|
|
{
|
|
if (__n == 0)
|
|
if (__n == 0)
|
|
return NULL;
|
|
return NULL;
|
|
-#if _LIBCPP_STD_VER <= 14
|
|
|
|
|
|
+#if __has_feature(cxx_constexpr_string_builtins)
|
|
|
|
+ return __builtin_char_memchr(__s, to_int_type(__a), __n);
|
|
|
|
+#elif _LIBCPP_STD_VER <= 14
|
|
return (const char_type*) memchr(__s, to_int_type(__a), __n);
|
|
return (const char_type*) memchr(__s, to_int_type(__a), __n);
|
|
#else
|
|
#else
|
|
for (; __n; --__n)
|
|
for (; __n; --__n)
|
|
@@ -331,7 +333,7 @@ char_traits<wchar_t>::compare(const char_type* __s1, const char_type* __s2, size
|
|
{
|
|
{
|
|
if (__n == 0)
|
|
if (__n == 0)
|
|
return 0;
|
|
return 0;
|
|
-#if __has_builtin(__builtin_wmemcmp)
|
|
|
|
|
|
+#if __has_feature(cxx_constexpr_string_builtins)
|
|
return __builtin_wmemcmp(__s1, __s2, __n);
|
|
return __builtin_wmemcmp(__s1, __s2, __n);
|
|
#elif _LIBCPP_STD_VER <= 14
|
|
#elif _LIBCPP_STD_VER <= 14
|
|
return wmemcmp(__s1, __s2, __n);
|
|
return wmemcmp(__s1, __s2, __n);
|
|
@@ -351,7 +353,7 @@ inline _LIBCPP_CONSTEXPR_AFTER_CXX14
|
|
size_t
|
|
size_t
|
|
char_traits<wchar_t>::length(const char_type* __s) _NOEXCEPT
|
|
char_traits<wchar_t>::length(const char_type* __s) _NOEXCEPT
|
|
{
|
|
{
|
|
-#if __has_builtin(__builtin_wcslen)
|
|
|
|
|
|
+#if __has_feature(cxx_constexpr_string_builtins)
|
|
return __builtin_wcslen(__s);
|
|
return __builtin_wcslen(__s);
|
|
#elif _LIBCPP_STD_VER <= 14
|
|
#elif _LIBCPP_STD_VER <= 14
|
|
return wcslen(__s);
|
|
return wcslen(__s);
|
|
@@ -369,7 +371,7 @@ char_traits<wchar_t>::find(const char_type* __s, size_t __n, const char_type& __
|
|
{
|
|
{
|
|
if (__n == 0)
|
|
if (__n == 0)
|
|
return NULL;
|
|
return NULL;
|
|
-#if __has_builtin(__builtin_wmemchr)
|
|
|
|
|
|
+#if __has_feature(cxx_constexpr_string_builtins)
|
|
return __builtin_wmemchr(__s, __a, __n);
|
|
return __builtin_wmemchr(__s, __a, __n);
|
|
#elif _LIBCPP_STD_VER <= 14
|
|
#elif _LIBCPP_STD_VER <= 14
|
|
return wmemchr(__s, __a, __n);
|
|
return wmemchr(__s, __a, __n);
|