diff --git a/cppwinrt/pch.h b/cppwinrt/pch.h index 335324767..e6a31443e 100644 --- a/cppwinrt/pch.h +++ b/cppwinrt/pch.h @@ -1,5 +1,6 @@ #pragma once +#include #include "cmd_reader.h" #include #include "task_group.h" diff --git a/cppwinrt/text_writer.h b/cppwinrt/text_writer.h index 50e6e6b15..3e210db83 100644 --- a/cppwinrt/text_writer.h +++ b/cppwinrt/text_writer.h @@ -6,6 +6,7 @@ #include #include #include +#include namespace cppwinrt { diff --git a/strings/base_chrono.h b/strings/base_chrono.h index e8e5a1ee4..151246d46 100644 --- a/strings/base_chrono.h +++ b/strings/base_chrono.h @@ -47,7 +47,7 @@ WINRT_EXPORT namespace winrt static time_point from_time_t(time_t time) noexcept { - return from_sys(std::chrono::system_clock::from_time_t(time)); + return std::chrono::time_point_cast(from_sys(std::chrono::system_clock::from_time_t(time))); } static file_time to_file_time(time_point const& time) noexcept diff --git a/strings/base_includes.h b/strings/base_includes.h index 10518a705..54edca841 100644 --- a/strings/base_includes.h +++ b/strings/base_includes.h @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -20,6 +21,10 @@ #include #include +#if __has_include() +#include +#endif + #if __has_include() #define WINRT_IMPL_NUMERICS #include @@ -50,7 +55,7 @@ namespace winrt::impl using suspend_never = std::suspend_never; } -#else +#elif __has_include() #include @@ -63,4 +68,6 @@ namespace winrt::impl using suspend_never = std::experimental::suspend_never; } +#else +#error C++/WinRT requires coroutine support, which is currently missing. Try enabling C++20 in your compiler. #endif diff --git a/strings/base_string_operators.h b/strings/base_string_operators.h index f9701aa4b..b00150f92 100644 --- a/strings/base_string_operators.h +++ b/strings/base_string_operators.h @@ -55,9 +55,9 @@ WINRT_EXPORT namespace winrt return left < std::wstring_view(right); } - bool operator<(hstring const& left, nullptr_t) = delete; + bool operator<(hstring const& left, std::nullptr_t) = delete; - bool operator<(nullptr_t, hstring const& right) = delete; + bool operator<(std::nullptr_t, hstring const& right) = delete; inline bool operator!=(hstring const& left, hstring const& right) noexcept { return !(left == right); } inline bool operator>(hstring const& left, hstring const& right) noexcept { return right < left; } inline bool operator<=(hstring const& left, hstring const& right) noexcept { return !(right < left); }