Было ли необходимо включить <random>в GCC 4.8? - PullRequest
0 голосов
/ 13 ноября 2018

Я унаследовал проект C ++, который был написан в 2014 году и действительно компилируется с GCC 4.8.В конкретном файле создаются несколько классов, которые в настоящее время находятся в заголовке <random> стандартной библиотеки C ++.К ним относятся mt19937, random_device, uniform_real_distribution и normal_distribution.

Когда я компилирую этот файл с помощью GCC 7.3, я получаю сообщение об ошибке, говорящее, что эти классы не определены в stdПространство имен.Эта ошибка (очевидно) исчезает, когда я включаю <random>.

Мой вопрос: почему эта ошибка не возникает в GCC 4.8?Были ли эти классы ранее найдены под другим заголовком?

1 Ответ

0 голосов
/ 13 ноября 2018

Стандартные заголовки могут включать другие заголовки . Это может быть полезно, когда они совместно используют реализацию. Однако эти вещи могут меняться со временем, например, когда общие части преобразуются в третий (внутренний) заголовочный файл.

Поскольку мы не знаем точно, как <random> был косвенно включен в GCC4.8, мы не можем быть абсолютно уверены в том, что произошло, но это не удивительно.

...