Трудно назвать отрицание, но да - имена модулей не могут совпадать с именами немодульных.
У нас есть множество вариантов поиска имен в C ++, но ни один из них не учитывает имена модулей. Подобно выражению f(x);
, можно найти множество вещей с именами f
и x
, и эти ()
могут даже означать разные вещи, но он никогда не сможет найти ни модуль с именем f
или x
. Именование модулей одним или другим или обоими не меняет поиск.
Аналогично, в преамбуле все module
связанные операторы (import
, export
, объявления модулей или объявления разделов) только рассматривают имена модулей. Если у вас есть что-то вроде:
import M1;
import M2;
И M1
происходит с экспортом некоторого имени M2
, которое не сломает последующие import
из M2
. Мы ищем, в частности, module
s с именем M2
.
Вам не нужно беспокоиться о столкновениях между этими двумя вещами.