web-dev-qa-db-fra.com

Statut d'implémentation std :: put_time dans GCC?

J'essayais de compiler cet exemple de programme en utilisant GCC (versions testées 4.5.1, 4.6.3, 4.8.4):

#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>

using std::chrono::system_clock;

int main()
{
    system_clock::time_point now = system_clock::now();
    std::time_t now_c = system_clock::to_time_t(
                            now - std::chrono::hours(24));
    std::cout << "One day ago, the time was "
              << std::put_time(std::localtime(&now_c), "%F %T") << '\n';
}

Mais ça me dit:

prog.cpp: In function 'int main()':
prog.cpp:14:18: error: 'put_time' is not a member of 'std'

Je pensais que ce n'était probablement pas encore implémenté. J'ai donc essayé de vérifier l'état d'implémentation de cette fonction. Je n'ai trouvé que cette page:

mais là je n'ai pu trouver aucune note sur put_time ou chrono ou similaire. Quelqu'un peut-il m'indiquer une ressource qui fournit des informations sur l'état d'implémentation de cette bibliothèque?

61
moooeeeep

Voir TODO manipulateurs iomanip étendus std :: get_time et std :: put_time pour gcc 4.8.0.

Voir aussi Manière multiplateforme pour obtenir l'heure du jour? affirmant que cela n'est pas implémenté dans 4.7.0.


MISE À JOUR: En tant que développeur gcc Jonathan Wakely a confirmé ci-dessous: Le std::get_time et std::put_time les manipulateurs manquent toujours dans gcc 4.9.


MISE À JOUR: Jonathan Wakely fermé ce ticket le 22 décembre 2014:

Corrigé pour GCC 5

Merci simonwo de m'avoir prévenu.

74
Ali

Vous avez peut-être remarqué que le lien que vous avez donné ne répertorie pas les parties de la bibliothèque! Mais en dessous du tableau, il est écrit:

Le statut de l'implémentation de la bibliothèque peut être suivi dans cette table

Ce tableau note que std::get_time et std::put_time les manipulateurs ne sont pas encore implémentés.

Éditer: put_time est maintenant sur le tronc de développement GCC.

19
Jonathan Wakely