GCC中的std :: put_time实施状态?

时间:2013-01-03 10:16:48

标签: c++ gcc c++11 std chrono

我试图使用GCC编译this example program(测试版本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';
}

But it tells me:

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

我想,可能还没有实现。所以我试着检查这个功能的实现状态。我只找到了这个页面:

但我在put_timechrono或类似地找不到任何记录。任何人都可以指向我提供有关此库的实施状态的信息的资源吗?

2 个答案:

答案 0 :(得分:73)

有关gcc 4.8.0的信息,请参阅TODO extended iomanip manipulators std::get_time and std::put_time

另请参阅Cross Platform way to get the time of day?声称未在4.7.0中实施。


更新:正如下面的gcc开发者Jonathan Wakely confirmed:gcc 4.9中仍然缺少std::get_timestd::put_time操纵符。


更新:Jonathan Wakely closed 2014年12月22日这张票:

  

已修复GCC 5

感谢simonwo让我了解它。

答案 1 :(得分:19)

您可能已经注意到,您提供的链接未列出库的任何部分!但在表格下面说:

  

可以在此table

中跟踪库实施的状态

该表说明std::get_timestd::put_time操纵器尚未实施。

编辑:put_time现在位于GCC开发中心。