Реализации STL с открытым исходным кодом с поддержкой С++ 11
Короче, я ищу альтернативы STLPort. STLPort не обновлялось какое-то время (с 2008 года?) И отсутствует поддержка С++ 11. Кто-нибудь знает какие-либо альтернативы? Мне нужно скомпилировать с помощью различных инструментальных цепей, для различных архитектур и различных целевых ОС.
Я собираюсь начать изучать реализацию GNU С++ и посмотреть, как привязана она к инструментальной цепочке GCC в качестве альтернативы и опубликует результаты. Но если у кого-то есть какие-то предварительные знания, это будет здорово.
Альтернативой этому могут быть реализации различных ключевых функций С++ 11 STL, таких как новые типы интеллектуальных указателей и std:: threads. В худшем случае я могу извлечь интеллектуальные указатели из boost. Существуют ли какие-либо реализации std:: threads в терминах pthreads или потоков Windows?
Спасибо
Ответы
Ответ 1
Вы можете посмотреть libС++. Это стандартная библиотека С++ для clang. Я не пытался скомпилировать его с другим компилятором или другой платформой, чем MacOS. Хотя, безусловно, существуют зависимости компилятора, например, в <type_traits>
и заголовках из библиотеки поддержки языков (например, <exception>
, <type_info>
и т.д.), Я могу себе представить, что большая часть кода будет компилироваться с другими компиляторами.
Вы уже упоминали libstdc++, который, похоже, работает с другими компиляторами, чем gcc, по крайней мере, на Linux и MacOS: clang используется для использования libstdС++ в MacOS. Тем не менее, теперь я не понимаю, как счастливый libstdС++ должен быть скомпилирован с другими компиляторами.
Для конкретных классов, например. std::shared_ptr<T>
или группы классов std::thread
, вы можете получить подходящие варианты замены из Boost.
Ответ 2
Помимо реализаций, поставляемых с gcc и clang, есть также сторонний open-source uSTL (с c++11
поддержка). Согласно его веб-сайту, он нацелен на сокращение некоторых накладных расходов в "шаблоне раздувания". Однако он не реализует строки wchar
. Они также имеют нестандартное распределение памяти.
На своем веб-сайте есть примеры, показывающие, как его можно использовать вместо gcc stl.