Что бы произошло, если бы вы создали исходный модуль, который содержал класс с тем же именем, что и тот, в котором виртуальные методы были запрещены, и этот класс содержал виртуальный метод, но не имел других методов, чьи имена скрывали имена другого класса? Какие глобальные символы создаст этот класс? Я ожидал бы, что если два класса с одинаковыми именами существуют, но не имеют ничего общего, компоновщик, вероятно, не закричит, но если оба класса имеют vtable, компоновщик может зарегистрировать конфликт. Будет ли это действительно регистрировать конфликт, будет зависеть от используемых правил искажения имен.