Состояние реализации 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 или так. Может кто-нибудь указать мне на ресурс, который предоставляет информацию о состоянии реализации для этой библиотеки?

55

Решение

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

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


ОБНОВИТЬ: Как разработчик GCC Джонатан Уэйкли подтвердил ниже std::get_time а также std::put_time Манипуляторы все еще отсутствуют в GCC 4.9.


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

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

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

71

Другие решения

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

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

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

Редактировать: put_time сейчас находится на стволе разработки GCC.

18