[libcxx-commits] [PATCH] D133490: [libc++] Fix compilation error on platforms that don't implement std::tm
Louis Dionne via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Sep 8 12:34:55 PDT 2022
ldionne updated this revision to Diff 458828.
ldionne marked an inline comment as done.
ldionne added a comment.
Apply review comments.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D133490/new/
https://reviews.llvm.org/D133490
Files:
libcxx/include/__chrono/convert_to_tm.h
libcxx/include/__chrono/formatter.h
libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/ostream.pass.cpp
libcxx/test/std/time/time.syn/formatter.day.pass.cpp
Index: libcxx/test/std/time/time.syn/formatter.day.pass.cpp
===================================================================
--- libcxx/test/std/time/time.syn/formatter.day.pass.cpp
+++ libcxx/test/std/time/time.syn/formatter.day.pass.cpp
@@ -6,7 +6,7 @@
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03, c++11, c++14, c++17
-// UNSUPPORTED: libcpp-has-no-localization
+// UNSUPPORTED: no-localization
// UNSUPPORTED: libcpp-has-no-incomplete-format
// TODO FMT Investigate Windows issues.
Index: libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/ostream.pass.cpp
===================================================================
--- libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/ostream.pass.cpp
+++ libcxx/test/std/time/time.cal/time.cal.day/time.cal.day.nonmembers/ostream.pass.cpp
@@ -7,7 +7,7 @@
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03, c++11, c++14, c++17
-// UNSUPPORTED: libcpp-has-no-localization
+// UNSUPPORTED: no-localization
// UNSUPPORTED: libcpp-has-no-incomplete-format
// TODO FMT Investigate Windows issues.
Index: libcxx/include/__chrono/formatter.h
===================================================================
--- libcxx/include/__chrono/formatter.h
+++ libcxx/include/__chrono/formatter.h
@@ -55,7 +55,7 @@
template <class _CharT, class _Tp>
_LIBCPP_HIDE_FROM_ABI void __format_chrono_using_chrono_specs(
const _Tp& __value, basic_stringstream<_CharT>& __sstr, basic_string_view<_CharT> __chrono_specs) {
- tm __t = std::__convert_to_tm(__value);
+ tm __t = std::__convert_to_tm<tm>(__value);
const auto& __facet = std::use_facet<time_put<_CharT>>(__sstr.getloc());
for (auto __it = __chrono_specs.begin(); __it != __chrono_specs.end(); ++__it) {
if (*__it == _CharT('%')) {
Index: libcxx/include/__chrono/convert_to_tm.h
===================================================================
--- libcxx/include/__chrono/convert_to_tm.h
+++ libcxx/include/__chrono/convert_to_tm.h
@@ -13,7 +13,6 @@
#include <__chrono/day.h>
#include <__concepts/same_as.h>
#include <__config>
-#include <ctime>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
@@ -23,17 +22,19 @@
#if _LIBCPP_STD_VER > 17
-template <class _Tp>
-_LIBCPP_HIDE_FROM_ABI tm __convert_to_tm(const _Tp& __value) {
- tm __result = {};
+// Convert a chrono calendar time point to the given tm type,
+// which must have the same properties as std::tm.
+template <class _Tm, class _ChronoCalendarTimePoint>
+_LIBCPP_HIDE_FROM_ABI _Tm __convert_to_tm(const _ChronoCalendarTimePoint& __value) {
+ _Tm __result = {};
# ifdef __GLIBC__
__result.tm_zone = "UTC";
# endif
- if constexpr (same_as<_Tp, chrono::day>)
+ if constexpr (same_as<_ChronoCalendarTimePoint, chrono::day>)
__result.tm_mday = static_cast<unsigned>(__value);
else
- static_assert(sizeof(_Tp) == 0, "Add the missing type specialization");
+ static_assert(sizeof(_ChronoCalendarTimePoint) == 0, "Add the missing type specialization");
return __result;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D133490.458828.patch
Type: text/x-patch
Size: 3196 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20220908/108b3c07/attachment.bin>
More information about the libcxx-commits
mailing list