Это может произойти, например, если программа связывается с одной реализацией стандартной библиотеки, а также со статической библиотекой, которая связывается с другой.Это не вызвало бы проблем, потому что имена, такие как std::string
, искажены во что-то более длинное и более сложное, которое не будет конфликтовать.(Это также то, как функции с одним и тем же именем могут быть перегружены и вызваны с разными типами аргументов, и почему программы, написанные для более старых версий стандартной библиотеки, не ломаются при обновлении.)
Одно важное предупреждение:это работает только в том случае, если STL не является частью интерфейса какого-либо компонента, связанного с другой версией.В противном случае любой клиентский код будет компилироваться с другой версией стандартной библиотеки, на которую он ссылается при вызове этого компонента, или даже передавать неверные структуры данных в и из библиотеки.