diff --git a/stl/inc/cstddef b/stl/inc/cstddef index fb5fc321a14..561f916dd34 100644 --- a/stl/inc/cstddef +++ b/stl/inc/cstddef @@ -25,8 +25,9 @@ _STL_DISABLE_CLANG_WARNINGS #undef intrinsic _STD_BEGIN -_EXPORT_STD using _CSTD ptrdiff_t; -_EXPORT_STD using _CSTD size_t; +// using deduction to define size_t and ptrdiff_t for better diagnostics, see GH-5699 +_EXPORT_STD using ptrdiff_t = decltype((int*) (nullptr) - (int*) (nullptr)); +_EXPORT_STD using size_t = decltype(sizeof(0)); _EXPORT_STD using max_align_t = double; // most aligned type _EXPORT_STD using nullptr_t = decltype(nullptr); diff --git a/stl/inc/cstdio b/stl/inc/cstdio index 674c36c3c75..c4a3b2188ec 100644 --- a/stl/inc/cstdio +++ b/stl/inc/cstdio @@ -32,7 +32,7 @@ _STD_BEGIN using _CSTD _Mbstatet; -_EXPORT_STD using _CSTD size_t; +_EXPORT_STD using size_t = decltype(sizeof(0)); _EXPORT_STD using _CSTD fpos_t; _EXPORT_STD using _CSTD FILE; _EXPORT_STD using _CSTD clearerr; diff --git a/stl/inc/cstdlib b/stl/inc/cstdlib index 1bf0509fe3b..9e4f4a88d97 100644 --- a/stl/inc/cstdlib +++ b/stl/inc/cstdlib @@ -34,7 +34,7 @@ _NODISCARD _Check_return_ inline long double abs(_In_ long double _Xx) noexcept _END_EXTERN_CXX_WORKAROUND _STD_BEGIN -_EXPORT_STD using _CSTD size_t; +_EXPORT_STD using size_t = decltype(sizeof(0)); _EXPORT_STD using _CSTD div_t; _EXPORT_STD using _CSTD ldiv_t; _EXPORT_STD using _CSTD abort; diff --git a/stl/inc/cstring b/stl/inc/cstring index 2445e9fbdfe..a6b264090d8 100644 --- a/stl/inc/cstring +++ b/stl/inc/cstring @@ -21,7 +21,7 @@ _STD_BEGIN #pragma warning(push) #pragma warning(disable : 4995) // name was marked as #pragma deprecated -_EXPORT_STD using _CSTD size_t; +_EXPORT_STD using size_t = decltype(sizeof(0)); _EXPORT_STD using _CSTD memchr; _EXPORT_STD using _CSTD memcmp; _EXPORT_STD using _CSTD memcpy; diff --git a/stl/inc/ctime b/stl/inc/ctime index ae2f152edc4..3611460d0bf 100644 --- a/stl/inc/ctime +++ b/stl/inc/ctime @@ -19,7 +19,7 @@ _STL_DISABLE_CLANG_WARNINGS _STD_BEGIN _EXPORT_STD using _CSTD clock_t; -_EXPORT_STD using _CSTD size_t; +_EXPORT_STD using size_t = decltype(sizeof(0)); _EXPORT_STD using _CSTD time_t; _EXPORT_STD using _CSTD tm; _EXPORT_STD using _CSTD asctime; diff --git a/stl/inc/cuchar b/stl/inc/cuchar index c7820977427..f75dff0f199 100644 --- a/stl/inc/cuchar +++ b/stl/inc/cuchar @@ -19,7 +19,7 @@ _STL_DISABLE_CLANG_WARNINGS _STD_BEGIN _EXPORT_STD using _CSTD mbstate_t; -_EXPORT_STD using _CSTD size_t; +_EXPORT_STD using size_t = decltype(sizeof(0)); _EXPORT_STD using _CSTD mbrtoc16; _EXPORT_STD using _CSTD c16rtomb; _EXPORT_STD using _CSTD mbrtoc32; diff --git a/stl/inc/cwchar b/stl/inc/cwchar index 5b2574db37b..c80a6ab16d9 100644 --- a/stl/inc/cwchar +++ b/stl/inc/cwchar @@ -29,7 +29,7 @@ _STD_BEGIN using _CSTD _Mbstatet; _EXPORT_STD using _CSTD mbstate_t; -_EXPORT_STD using _CSTD size_t; +_EXPORT_STD using size_t = decltype(sizeof(0)); _EXPORT_STD using _CSTD tm; _EXPORT_STD using _CSTD wint_t;