2014-01-23 7 views
6

Die C++ Standard (github.com/cplusplus/draft) die time_t Umwandlungsfunktionen (std::chrono::system_clock::to_time_t und std::chrono::system_clock::from_time_t) für so static und noexcept aufgeführt, aber nicht constexpr.Warum ist std :: chrono :: system_clock :: to_time_t() nicht consxpr?

gegeben, die im Wesentlichen alle Operationen auf time_point und duration sind constexpr (einschließlich duration_cast und time_point_cast), kann ich mir nicht aus irgendeinem Grund, sie auszuschließen. Eine kurze Überprüfung der libstdC++ - Quellen auf meinem lokalen Rechner bestätigt, dass diese Funktionen als einfache duration/time_point-Umwandlungen implementiert sind.

Gibt es einen Grund, warum diese beiden Funktionen nicht constexpr sein sollten? Ist dies nur ein Fall von "weil niemand vorgeschlagen hat, dass sie sein sollten"?

Antwort

3

Ist dies nur ein Fall von "weil niemand vorgeschlagen hat, dass sie sein sollten"?

Ja, ich denke, das ist genau richtig.

Ich bin gespannt: Sobald Sie eine constexpr time_t bekommen, was werden Sie damit machen? Keine der C-Funktionen unter time_t sind constexpr.

+0

Ich habe eine Timestamp-Klasse, die zuvor eine 'time_t' als interne Darstellung verwendet hat. Es bietet derzeit einen 'constexpr'-Konstruktor aus einer' time_t'. Jetzt möchte ich die interne Repräsentation in einen 'time_point' ändern, aber ohne 'constexpr from_time_t' werde ich gezwungen,' constexpr' aus dem 'time_t'-Konstruktor zu entfernen, was möglicherweise den nachgeschalteten Benutzercode unterbricht. – marack

+0

@marack: Ich verstehe. Ja, das ist frustrierend. Ich wäre sehr versucht, einfach die gemeinsame, aber unbestimmte Epoche und Repräsentation anzunehmen und nur eine eigene constexpr-Umwandlung zu veranstalten. Es ist einfach genug, wie Sie bereits bemerkt haben: 'system_clock :: time_point (Sekunden (time_t_value));'. Sie können auch einen Fehlerbericht für eine Bibliothek ablegen, indem Sie den Anweisungen hier folgen: http://cplusplus.github.io/LWG/lwg-active.html#submit_issue. –

Verwandte Themen