Включая & lt; random & gt; необходимо в 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? Были ли эти классы ранее найдены под другим заголовком?

0

Решение

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

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

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]