static_assert((std::is_same<decltype(strcoll(cpc, cpc)), int>::value), "");
static_assert((std::is_same<decltype(strxfrm(cp, cpc, s)), size_t>::value), "");
static_assert((std::is_same<decltype(memchr(vp, 0, s)), void*>::value), "");
+ static_assert((std::is_same<decltype(memchr(vpc, 0, s)), const void*>::value), "");
static_assert((std::is_same<decltype(strchr(cp, 0)), char*>::value), "");
+ static_assert((std::is_same<decltype(strchr(cpc, 0)), const char*>::value), "");
static_assert((std::is_same<decltype(strcspn(cpc, cpc)), size_t>::value), "");
static_assert((std::is_same<decltype(strpbrk(cp, cpc)), char*>::value), "");
+ static_assert((std::is_same<decltype(strpbrk(cpc, cpc)), const char*>::value), "");
static_assert((std::is_same<decltype(strrchr(cp, 0)), char*>::value), "");
+ static_assert((std::is_same<decltype(strrchr(cpc, 0)), const char*>::value), "");
static_assert((std::is_same<decltype(strspn(cpc, cpc)), size_t>::value), "");
static_assert((std::is_same<decltype(strstr(cp, cpc)), char*>::value), "");
+ static_assert((std::is_same<decltype(strstr(cpc, cpc)), const char*>::value), "");
#ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS
static_assert((std::is_same<decltype(strtok(cp, cpc)), char*>::value), "");
#endif
static_assert((std::is_same<decltype(strerror(0)), char*>::value), "");
static_assert((std::is_same<decltype(strlen(cpc)), size_t>::value), "");
- // These tests fail on systems whose C library doesn't provide a correct overload
- // set for strchr, strpbrk, strrchr, strstr, and memchr, unless the compiler is
- // a suitably recent version of Clang.
-#if !defined(__APPLE__) || defined(_LIBCPP_PREFERRED_OVERLOAD)
- static_assert((std::is_same<decltype(strchr(cpc, 0)), const char*>::value), "");
- static_assert((std::is_same<decltype(strpbrk(cpc, cpc)), const char*>::value), "");
- static_assert((std::is_same<decltype(strrchr(cpc, 0)), const char*>::value), "");
- static_assert((std::is_same<decltype(strstr(cpc, cpc)), const char*>::value), "");
- static_assert((std::is_same<decltype(memchr(vpc, 0, s)), const void*>::value), "");
-#endif
-
- return 0;
+ return 0;
}
static_assert((std::is_same<decltype(wcsncmp(L"", L"", s)), int>::value), "");
static_assert((std::is_same<decltype(wcsxfrm(ws, L"", s)), size_t>::value), "");
static_assert((std::is_same<decltype(wcschr((wchar_t*)0, L' ')), wchar_t*>::value), "");
+ static_assert((std::is_same<decltype(wcschr((const wchar_t*)0, L' ')), const wchar_t*>::value), "");
static_assert((std::is_same<decltype(wcscspn(L"", L"")), size_t>::value), "");
static_assert((std::is_same<decltype(wcslen(L"")), size_t>::value), "");
static_assert((std::is_same<decltype(wcspbrk((wchar_t*)0, L"")), wchar_t*>::value), "");
+ static_assert((std::is_same<decltype(wcspbrk((const wchar_t*)0, L"")), const wchar_t*>::value), "");
static_assert((std::is_same<decltype(wcsrchr((wchar_t*)0, L' ')), wchar_t*>::value), "");
+ static_assert((std::is_same<decltype(wcsrchr((const wchar_t*)0, L' ')), const wchar_t*>::value), "");
static_assert((std::is_same<decltype(wcsspn(L"", L"")), size_t>::value), "");
static_assert((std::is_same<decltype(wcsstr((wchar_t*)0, L"")), wchar_t*>::value), "");
+ static_assert((std::is_same<decltype(wcsstr((const wchar_t*)0, L"")), const wchar_t*>::value), "");
static_assert((std::is_same<decltype(wcstok(ws, L"", (wchar_t**)0)), wchar_t*>::value), "");
static_assert((std::is_same<decltype(wmemchr((wchar_t*)0, L' ', s)), wchar_t*>::value), "");
+ static_assert((std::is_same<decltype(wmemchr((const wchar_t*)0, L' ', s)), const wchar_t*>::value), "");
static_assert((std::is_same<decltype(wmemcmp(L"", L"", s)), int>::value), "");
static_assert((std::is_same<decltype(wmemcpy(ws, L"", s)), wchar_t*>::value), "");
static_assert((std::is_same<decltype(wmemmove(ws, L"", s)), wchar_t*>::value), "");
static_assert((std::is_same<decltype(mbsrtowcs(ws, (const char**)0, s, &mb)), size_t>::value), "");
static_assert((std::is_same<decltype(wcsrtombs(ns, (const wchar_t**)0, s, &mb)), size_t>::value), "");
- // These tests fail on systems whose C library doesn't provide a correct overload
- // set for wcschr, wcspbrk, wcsrchr, wcsstr, and wmemchr, unless the compiler is
- // a suitably recent version of Clang.
-#if !defined(__APPLE__) || defined(_LIBCPP_PREFERRED_OVERLOAD)
- static_assert((std::is_same<decltype(wcschr((const wchar_t*)0, L' ')), const wchar_t*>::value), "");
- static_assert((std::is_same<decltype(wcspbrk((const wchar_t*)0, L"")), const wchar_t*>::value), "");
- static_assert((std::is_same<decltype(wcsrchr((const wchar_t*)0, L' ')), const wchar_t*>::value), "");
- static_assert((std::is_same<decltype(wcsstr((const wchar_t*)0, L"")), const wchar_t*>::value), "");
- static_assert((std::is_same<decltype(wmemchr((const wchar_t*)0, L' ', s)), const wchar_t*>::value), "");
-#endif
-
#ifndef _LIBCPP_HAS_NO_STDIN
static_assert((std::is_same<decltype(getwchar()), wint_t>::value), "");
static_assert((std::is_same<decltype(vwscanf(L"", va)), int>::value), "");
static_assert((std::is_same<decltype(wprintf(L"")), int>::value), "");
#endif
- return 0;
+ return 0;
}
ASSERT_SAME_TYPE(int, decltype(std::strcoll(cpc, cpc)));
ASSERT_SAME_TYPE(std::size_t, decltype(std::strxfrm(cp, cpc, s)));
ASSERT_SAME_TYPE(void*, decltype(std::memchr(vp, 0, s)));
+ ASSERT_SAME_TYPE(const void*, decltype(std::memchr(vpc, 0, s)));
ASSERT_SAME_TYPE(char*, decltype(std::strchr(cp, 0)));
+ ASSERT_SAME_TYPE(const char*, decltype(std::strchr(cpc, 0)));
ASSERT_SAME_TYPE(std::size_t, decltype(std::strcspn(cpc, cpc)));
ASSERT_SAME_TYPE(char*, decltype(std::strpbrk(cp, cpc)));
+ ASSERT_SAME_TYPE(const char*, decltype(std::strpbrk(cpc, cpc)));
ASSERT_SAME_TYPE(char*, decltype(std::strrchr(cp, 0)));
+ ASSERT_SAME_TYPE(const char*, decltype(std::strrchr(cpc, 0)));
ASSERT_SAME_TYPE(std::size_t, decltype(std::strspn(cpc, cpc)));
ASSERT_SAME_TYPE(char*, decltype(std::strstr(cp, cpc)));
+ ASSERT_SAME_TYPE(const char*, decltype(std::strstr(cpc, cpc)));
#ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS
ASSERT_SAME_TYPE(char*, decltype(std::strtok(cp, cpc)));
#endif
ASSERT_SAME_TYPE(char*, decltype(std::strerror(0)));
ASSERT_SAME_TYPE(std::size_t, decltype(std::strlen(cpc)));
- // These tests fail on systems whose C library doesn't provide a correct overload
- // set for strchr, strpbrk, strrchr, strstr, and memchr, unless the compiler is
- // a suitably recent version of Clang.
-#if !defined(__APPLE__) || defined(_LIBCPP_PREFERRED_OVERLOAD)
- ASSERT_SAME_TYPE(const void*, decltype(std::memchr(vpc, 0, s)));
- ASSERT_SAME_TYPE(const char*, decltype(std::strchr(cpc, 0)));
- ASSERT_SAME_TYPE(const char*, decltype(std::strpbrk(cpc, cpc)));
- ASSERT_SAME_TYPE(const char*, decltype(std::strrchr(cpc, 0)));
- ASSERT_SAME_TYPE(const char*, decltype(std::strstr(cpc, cpc)));
-#endif
-
- return 0;
+ return 0;
}
ASSERT_SAME_TYPE(int, decltype(std::wcsncmp(L"", L"", s)));
ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsxfrm(ws, L"", s)));
ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcschr((wchar_t*)0, L' ')));
+ ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcschr((const wchar_t*)0, L' ')));
ASSERT_SAME_TYPE(std::size_t, decltype(std::wcscspn(L"", L"")));
ASSERT_SAME_TYPE(std::size_t, decltype(std::wcslen(L"")));
ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcspbrk((wchar_t*)0, L"")));
+ ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcspbrk((const wchar_t*)0, L"")));
ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcsrchr((wchar_t*)0, L' ')));
+ ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcsrchr((const wchar_t*)0, L' ')));
ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsspn(L"", L"")));
ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcsstr((wchar_t*)0, L"")));
+ ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcsstr((const wchar_t*)0, L"")));
ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcstok(ws, L"", (wchar_t**)0)));
ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemchr((wchar_t*)0, L' ', s)));
+ ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wmemchr((const wchar_t*)0, L' ', s)));
ASSERT_SAME_TYPE(int, decltype(std::wmemcmp(L"", L"", s)));
ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemcpy(ws, L"", s)));
ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemmove(ws, L"", s)));
ASSERT_SAME_TYPE(std::size_t, decltype(std::mbsrtowcs(ws, (const char**)0, s, &mb)));
ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsrtombs(ns, (const wchar_t**)0, s, &mb)));
- // These tests fail on systems whose C library doesn't provide a correct overload
- // set for wcschr, wcspbrk, wcsrchr, wcsstr, and wmemchr, unless the compiler is
- // a suitably recent version of Clang.
-#if !defined(__APPLE__) || defined(_LIBCPP_PREFERRED_OVERLOAD)
- ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcschr((const wchar_t*)0, L' ')));
- ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcspbrk((const wchar_t*)0, L"")));
- ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcsrchr((const wchar_t*)0, L' ')));
- ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcsstr((const wchar_t*)0, L"")));
- ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wmemchr((const wchar_t*)0, L' ', s)));
-#endif
-
#ifndef _LIBCPP_HAS_NO_STDIN
ASSERT_SAME_TYPE(std::wint_t, decltype(std::getwchar()));
ASSERT_SAME_TYPE(int, decltype(std::vwscanf(L"", va)));
ASSERT_SAME_TYPE(int, decltype(std::wprintf(L"")));
#endif
- return 0;
+ return 0;
}