Было ли необходимо включить <random> в GCC 4.8?
Я унаследовал проект C++, который был написан в 2014 году и действительно компилируется с GCC 4.8. В определенном файле несколько классов в настоящее время находятся в <random>
создаются заголовки стандартной библиотеки C++. Они включают mt19937
, random_device
, uniform_real_distribution
, а также normal_distribution
,
Когда я компилирую этот файл с GCC 7.3, я получаю сообщение об ошибке, говорящее, что эти классы не определены в std
Пространство имен. Эта ошибка (очевидно) исчезает, когда я включаю <random>
,
У меня вопрос, почему эта ошибка не происходит в GCC 4.8? Были ли эти классы ранее найдены под другим заголовком?
1 ответ
Стандартные заголовки могут включать другие заголовки. Это может быть полезно, когда они совместно используют реализацию. Однако эти вещи могут меняться со временем, например, когда общие части преобразуются в третий (внутренний) заголовочный файл.
Так как мы не знаем точно, как <random>
косвенно включенный в GCC4.8, мы не можем быть абсолютно уверенными в том, что произошло, но это не удивительно.