[libc++] Avoid instantiating type_trait classes
Use `using` aliases to avoid instantiating lots of types
Reviewed By: ldionne, #libc
Spies: libcxx-commits, miyuki
Differential Revision: https://reviews.llvm.org/D132785
NOKEYCHECK=True
GitOrigin-RevId: 5fab33af7f083a0043112742027172e9f297c07f
diff --git a/src/string.cpp b/src/string.cpp
index 8db1295..db211b2 100644
--- a/src/string.cpp
+++ b/src/string.cpp
@@ -85,7 +85,7 @@
inline V as_integer_helper(const string& func, const S& str, size_t* idx, int base, F f) {
typename S::value_type* ptr = nullptr;
const typename S::value_type* const p = str.c_str();
- typename remove_reference<decltype(errno)>::type errno_save = errno;
+ __libcpp_remove_reference_t<decltype(errno)> errno_save = errno;
errno = 0;
V r = f(p, &ptr, base);
swap(errno, errno_save);
@@ -172,7 +172,7 @@
inline V as_float_helper(const string& func, const S& str, size_t* idx, F f) {
typename S::value_type* ptr = nullptr;
const typename S::value_type* const p = str.c_str();
- typename remove_reference<decltype(errno)>::type errno_save = errno;
+ __libcpp_remove_reference_t<decltype(errno)> errno_save = errno;
errno = 0;
V r = f(p, &ptr);
swap(errno, errno_save);