quand peut-on avoir un objet de durée avec une valeur négative?
Chaque fois que vous voulez représenter une durée négative!
par exemple. "Dix secondes plus tôt" serait std::chrono::seconds(-10)
et si vous ajoutez cela à time_point t
alors vous obtenez un time_point
qui est dix secondes avant t
.
La norme dit "Un type duration
mesure le temps entre deux points dans le temps (time_points
)." Il ne dit pas qu'il peut seulement mesurer le temps entre les points de temps non décroissants. Cela signifie donc qu'il peut être utilisé pour mesurer le temps entre t1
et t2
même si t2 < t1
. Et pour le faire simplement, vous avez besoin d'une valeur négative. Si les durées ne peuvent pas être signées, alors, pour représenter un décalage qui signifie "plus tôt" pas "plus tard", vous devrez utiliser quelque chose comme std::pair<bool, duration>
où le bool
indique s'il s'agit d'un décalage positif ou négatif, puis vous auriez à faire:
chrono::time_point adjust(chrono::time_point t, pair<bool, duration> offset)
{
if (offset.first) // positive
return t + offset.second;
else // negative
return t - offset.second;
}
Ceci est stupide. Le langage et le matériel supportent déjà cela beaucoup plus expressivement et efficacement, en utilisant des entiers signés.
Lorsque vous soustrayez un point de temps d'un dans son passé. –
Peut-être que la durée négative peut représenter 'before 'à partir d'un certain point de temps. –