https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61166
--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> --- I can see one good reason to implement those operators as templates: it allows us to check if the literal value overflows the duration::rep type, which is required by the standard but impossible to implement without using templates.