for_stack
for_stack

Reputation: 22886

user-defined literals overloading in <chrono>

chrono takes user-defined literals to make it more convenient. For each literal, it has two overloading functions.

constexpr chrono::hours operator "" h(unsigned long long);
constexpr chrono::duration<unspecified , ratio<3600,1>> operator "" h(long double);

I'm confused by the second overloading function, i.e. the function with long double as parameter.

Why we need the second overloading? And what is unspecified?

Upvotes: 3

Views: 184

Answers (1)

Ron
Ron

Reputation: 15501

Both represent std::chrono::duration in hours. The first one forms an integer literal, the second one forms a floating-point literal. First one can represent tick count only, the second one can represent fractions of ticks.

Upvotes: 3

Related Questions