Boost Bimap занимает слишком много памяти в отладочной сборке

Я использую довольно много контейнеров в форме

boost::bimap<boost::bimaps::multiset_of<std::string>, boost::bimaps::set_of<AnEnum> >

Я определяю их в заголовочном файле, который включен в довольно много файлов cpp (это после того, как я максимально ограничил доступ к заголовочному файлу). Файлы .a, создаваемые в отладочной сборке, занимают более 1 ГБ (что приводит к остановке компиляции на полпути из-за ошибки «нет места на устройстве» и, естественно, время компиляции увеличилось в геометрической прогрессии.

Используемый компилятор gcc 4.8.1. Просто хотел узнать, сталкивался ли кто-нибудь с этой проблемой с boost :: bimap и что они сделали, чтобы решить эту проблему

1

Решение

Я очень вероятно, что каждый раз, когда вы используете такой bimap в другом файле он специализирован, что приводит к огромному дублированию кода. Если вы используете c++11 тогда вы должны объявить их как extern templateИ специализировать его только в одном файле. Увидеть использование внешнего шаблона (C ++ 11)

2

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector