GCC 4.8是否需要包含<random>?

时间:2018-11-13 05:21:42

标签: c++ std gcc4.8 gcc7

我继承了一个2014年编写的C ++项目,并且确实使用GCC 4.8进行了编译。在特定文件中,实例化了当前在C ++标准库的<random>头中找到的几个类。其中包括mt19937random_deviceuniform_real_distributionnormal_distribution

当我使用GCC 7.3编译此文件时,出现一条错误消息,指出这些类未在std名称空间中定义。当我包含<random>时,此错误(显然)消失了。

我的问题是,为什么在GCC 4.8中不会发生此错误?这些类以前是否在其他标头下找到?

1 个答案:

答案 0 :(得分:3)

Standard headers may include other headers。当他们共享一个实现时,这可能会很有用。但是,这些事情可能会随着时间而改变,例如当公共部分重构为第三个(内部)头文件时。

由于我们不确切知道<random>是如何间接包含在GCC4.8中的,因此我们对所发生的事情不能绝对肯定,但这并不奇怪。