-template <typename Rep, std::intmax_t Denominator>
-struct PosixTimeToDuration<
- std::chrono::duration<Rep, std::ratio<1, Denominator>>> {
- using Tgt = std::chrono::duration<Rep, std::ratio<1, Denominator>>;
-
- template <typename SubsecondRatio, typename Seconds, typename Subseconds>
- static Expected<Tgt, ConversionCode> cast(
- Seconds seconds,
- Subseconds subseconds) {
- static_assert(Tgt::period::num == 1, "special case expecting num==1");
- static_assert(Tgt::period::den != 1, "special case expecting den!=1");
- static_assert(
- SubsecondRatio::num == 1, "subsecond numerator should always be 1");
+template <
+ typename SubsecondRatio,
+ typename Seconds,
+ typename Subseconds,
+ typename Rep,
+ std::intmax_t Denominator>
+auto posixTimeToDuration(
+ Seconds seconds,
+ Subseconds subseconds,
+ std::chrono::duration<Rep, std::ratio<1, Denominator>> dummy)
+ -> Expected<decltype(dummy), ConversionCode> {
+ using Tgt = decltype(dummy);
+ static_assert(Tgt::period::num == 1, "special case expecting num==1");
+ static_assert(Tgt::period::den != 1, "special case expecting den!=1");
+ static_assert(
+ SubsecondRatio::num == 1, "subsecond numerator should always be 1");