Подтвердить что ты не робот

Статус std:: put_time в GCC?

Я пытался скомпилировать эту примерную программу с помощью GCC (проверенные версии 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';
}

Но это говорит мне:

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

Я подумал, наверное, это еще не реализовано. Поэтому я попытался проверить статус реализации для этой функции. Я только нашел эту страницу:

но там я не мог найти заметки на put_time или chrono или аналогично. Может ли кто-нибудь указать мне ресурс, который предоставляет информацию о статусе реализации для этой библиотеки?

4b9b3361

Ответ 1

Смотрите TODO расширенные манипуляторы iomanip std:: get_time и std:: put_time для gcc 4.8.0.

См. также Кросс-платформенный способ получить время суток?, утверждая, что это не реализовано в 4.7.0.


UPDATE: Как показал gcc-разработчик Джонатан Вакели: манипуляторы std::get_time и std::put_time все еще отсутствуют в gcc 4.9.


ОБНОВЛЕНИЕ: Джонатан Вакели закрыл этот билет 22 декабря 2014 года:

Исправлено для GCC 5

Спасибо simonwo за то, что сообщили мне об этом.

Ответ 2

Возможно, вы заметили, что ссылка, которую вы указали, не содержит список любых частей библиотеки! Но ниже таблицы говорится:

Статус реализации библиотеки можно отслеживать в этой таблице

В этой таблице указано, что манипуляторы std::get_time и std::put_time еще не реализованы.

Изменить: put_time теперь находится в соединительной линии GCC.