diff options
author | Sergey Magidovich <mgsergio@mapswithme.com> | 2016-03-22 22:48:16 +0300 |
---|---|---|
committer | Sergey Yershov <yershov@corp.mail.ru> | 2016-03-23 16:59:34 +0300 |
commit | 53d598928324e9eb71838201d128bce97d6093a9 (patch) | |
tree | 27139144f663d8439e32479933521d183c93344c /3party | |
parent | 623df1d181002e7dcc4214df59885f601952f42e (diff) |
Fix bug in opening hours formatting.
Diffstat (limited to '3party')
-rw-r--r-- | 3party/opening_hours/opening_hours.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/3party/opening_hours/opening_hours.cpp b/3party/opening_hours/opening_hours.cpp index 81f7fd0997..ea603b43fc 100644 --- a/3party/opening_hours/opening_hours.cpp +++ b/3party/opening_hours/opening_hours.cpp @@ -96,6 +96,14 @@ class StreamFlagsKeeper }; template <typename TNumber> +constexpr bool IsChar(TNumber) noexcept +{ + return std::is_same<signed char, TNumber>::value || + std::is_same<unsigned char, TNumber>::value || + std::is_same<char, TNumber>::value; +}; + +template <typename TNumber, typename std::enable_if<!IsChar(TNumber{}), void*>::type = nullptr> void PrintPaddedNumber(std::ostream & ost, TNumber const number, uint32_t const padding = 1) { static_assert(std::is_integral<TNumber>::value, "number should be of integral type."); @@ -103,6 +111,12 @@ void PrintPaddedNumber(std::ostream & ost, TNumber const number, uint32_t const ost << std::setw(padding) << std::setfill('0') << number; } +template <typename TNumber, typename std::enable_if<IsChar(TNumber{}), void*>::type = nullptr> +void PrintPaddedNumber(std::ostream & ost, TNumber const number, uint32_t const padding = 1) +{ + PrintPaddedNumber(ost, static_cast<int32_t>(number), padding); +} + void PrintHoursMinutes(std::ostream & ost, std::chrono::hours::rep hours, std::chrono::minutes::rep minutes) |