t1 and
t2 are values returned by C1::now() where the call returning t1 happens
before ([intro.multithread]) the call returning t2 and both of these calls
occur
before C1::time_point::max().

Table 103: *Cpp17Clock* requirements [tab:time.clock]

Expression | Return type | Operational semantics | |

C1::rep | An arithmetic type or a class emulating an arithmetic type | The representation type of C1::duration. | |

C1::period | a specialization of ratio | The tick period of the clock in seconds. | |

C1::duration | chrono::duration<C1::rep, C1::period> | The duration type of the clock. | |

C1::time_point | chrono::time_point<C1> or chrono::time_point<C2, C1::duration> | ||

C1::is_steady | const bool | ||

C1::now() | C1::time_point | Returns a time_point object representing the current point in time. |

A type TC meets the *Cpp17TrivialClock* requirements if

- TC meets the
*Cpp17Clock*requirements, - the types TC::rep, TC::duration, and TC::time_point
meet the
*Cpp17EqualityComparable*(Table 28) and*Cpp17LessThanComparable*(Table 29) and*Cpp17Swappable*([swappable.requirements]) requirements and the requirements of numeric types ([numeric.requirements]), - the function TC::now() does not throw exceptions, and
- the type TC::time_point::clock meets the
*Cpp17TrivialClock*requirements, recursively.