Из руководства:
В выпуске GCC 5.1 libstdc++ представил новую библиотеку ABI, которая включает новые реализации std::string и std::list. Эти изменения были необходимы для соответствия стандарту C++ 2011 года, который запрещает копирование строк при записи и требует, чтобы списки отслеживали их размер.
Можно использовать макрос _GLIBCXX_USE_CXX11_ABI, чтобы контролировать, какой из заголовков библиотеки использует старый или новый ABI, независимо от того, какой «-std» используется.
Я хотел бы знать, каковы будут последствия использования этого «совместимого ABI»? Я предполагаю, что это повлияет на производительность операций с небольшими строками во время выполнения (я предполагаю, что отрицательно), и что доступ к размеру списка изменится с O (1) (C11 ABI) до O (N) (совместимость ABI).
- Верны ли мои предположения и может ли кто-нибудь уточнить?
- Есть ли другие последствия, которые я пропустил? Как насчет атомарности и параллелизма? Какое-то влияние?