C++11 g++;4.8.*标准::计时未声明

C++11 g++;4.8.*标准::计时未声明,c++11,gcc,C++11,Gcc,应该在g++4.8.*中得到支持。但是,当我尝试使用g++4.8.3进行编译时,它找不到各种声明。当然,我使用的是-std=c++11 例如,此调用(来自自动生成的文件;这就是-std出现两次的原因): G++--GMS-2MS-2-M64 -STD= C++ 11 - FExcExts——STD= C+++11 没有“C++代码:STD:::Caltho::MistimeCyCalth标准C++”。然而,有一个问题 对微软和burritos everywhere公平地说,在我看来,您可以使用

应该在
g++4.8.*
中得到支持。但是,当我尝试使用
g++4.8.3
进行编译时,它找不到各种声明。当然,我使用的是
-std=c++11

例如,此调用(来自自动生成的文件;这就是
-std
出现两次的原因):


G++--GMS-2MS-2-M64 -STD= C++ 11 - FExcExts——STD= C+++11

没有“C++代码:STD:::Caltho::MistimeCyCalth标准C++”。然而,有一个问题


对微软和burritos everywhere公平地说,

在我看来,您可以使用这样的代码来确定您使用的是旧的库实现(提供单调的时钟,但不是稳定的时钟)还是新的(提供稳定的时钟,但可能不提供单调的时钟)

#如果定义(uuu GLIBCXX_uuu)和&(uuu GLIBCXX_uuu<20120322)
typedef std::chrono::单调时钟稳定时钟;
#否则
typedef std::chrono::稳定时钟稳定时钟;
#恩迪夫

上面的邮戳与GCC 4.7.0附带的libstdc++相对应。我欢迎对此代码进行任何改进或更正,例如支持libstdc++以外的库。

从技术上讲,它的存在依赖于实现。例如,该代码在MSVC中编译。谢谢。@imallett该标准允许实现在命名空间
std
和嵌套命名空间中添加其他名称,这样在某些实现中可能会有
std::chrono::i_like_burritos
。但在C++11中,命名空间
chrono
不要求有一个名为
i_like_burritos
(或
单调时钟
)的成员。(或者C++14,这是一个遗憾,因为我真的很喜欢玉米煎饼。)当然。我只是说
std::chrono::monotic_clock
是一个玉米煎饼。
#if defined(__GLIBCXX__) && (__GLIBCXX__ < 20120322)
typedef std::chrono::monotonic_clock steady_clock;
#else
typedef std::chrono::steady_clock steady_clock;
#endif