Suffix d for days duration (#354)

This commit is contained in:
tomaszkam 2018-06-20 17:39:48 +02:00 committed by Howard Hinnant
parent 2d282e35fa
commit f46885e632
2 changed files with 19 additions and 10 deletions

View File

@ -8225,7 +8225,6 @@ get_units(std::ratio<3600>)
return string_literal<CharT, 2>{'h'}; return string_literal<CharT, 2>{'h'};
} }
template <class CharT> template <class CharT>
CONSTCD11 CONSTCD11
inline inline
@ -8235,6 +8234,15 @@ get_units(std::ratio<60>)
return string_literal<CharT, 4>{'m', 'i', 'n'}; return string_literal<CharT, 4>{'m', 'i', 'n'};
} }
template <class CharT>
CONSTCD11
inline
string_literal<CharT, 2>
get_units(std::ratio<86400>)
{
return string_literal<CharT, 2>{'d'};
}
template <class CharT, class Traits = std::char_traits<CharT>> template <class CharT, class Traits = std::char_traits<CharT>>
struct make_string; struct make_string;

View File

@ -192,6 +192,14 @@ void test_calendar()
assert(os.str() == "13h"); assert(os.str() == "13h");
os.str(""); os.str("");
} }
// days
{
days d(13);
os << d;
assert(os.str() == "13d");
os.str("");
}
} }
void test_integral_scale() void test_integral_scale()
@ -217,14 +225,6 @@ void test_integral_scale()
os.str(""); os.str("");
} }
// days = ratio 24 * 60 * 60 / 1 = ratio 86400 / 1
{
days d(13);
os << d;
assert(os.str() == "13[86400]s");
os.str("");
}
// weeks = ratio 7 * 24 * 60 * 60 / 1 = ratio 604800 / 1 // weeks = ratio 7 * 24 * 60 * 60 / 1 = ratio 604800 / 1
{ {
weeks d(13); weeks d(13);
@ -310,7 +310,8 @@ void test_constexpr()
CONSTCD11 auto min = get_units<char>(std::ratio<60>{}); CONSTCD11 auto min = get_units<char>(std::ratio<60>{});
CONSTCD11 auto h = get_units<char>(std::ratio<3600>{}); CONSTCD11 auto h = get_units<char>(std::ratio<3600>{});
(void)min, (void)h; CONSTCD11 auto d = get_units<char>(std::ratio<86400>{});
(void)min, (void)h, (void)d;
CONSTCD14 auto integer = get_units<char>(std::ratio<123>{}); CONSTCD14 auto integer = get_units<char>(std::ratio<123>{});
CONSTCD14 auto ratio = get_units<char>(std::ratio<123, 3>{}); CONSTCD14 auto ratio = get_units<char>(std::ratio<123, 3>{});