Есть ли какая-нибудь буст-независимая версия boost / tr1 shared_ptr - PullRequest
0 голосов
/ 01 мая 2010

Я ищу независимую реализацию boost / tr1 shared_ptr, weak_ptr и enable_shared_from_this.

Мне нужно:

  • Увеличьте независимую очень маленькую реализацию этих функций.
  • Мне нужна поддержка только современных компиляторов, таких как GCC-4.x, MSVC-2008, Intel, а не таких, как MSVC6 или gcc-3.3
  • Мне нужно, чтобы он был лицензирован по лицензии LGPL без авторского лева, такой как Boost / Mit / 3-clause BSD.

Так что я могу включить его в свою библиотеку.

Примечание. Извлечь shared_ptr из boost довольно сложно, по крайней мере, BCP дает около 324 файлов ...

Ответы [ 3 ]

3 голосов
/ 01 мая 2010

Я извлекли shared_ptr из Boost, чтобы использовать его отдельно, и это было определенно меньше, чем 300 файлов. Однако это было 3 года назад, поэтому все могло измениться (может быть, сейчас в папке config больше файлов?). То, что мне было нужно для shared_ptr, было:

  • assert.hpp
  • checked_delete.hpp
  • throw_exception.hpp
  • config.hpp и каталог конфигурации
  • подробно / bad_weak_ptr.hpp
  • подробно / interlocked.hpp
  • подробно / shared_count.hpp
  • подробно / sp_counted_base.hpp
  • подробно / sp_counted_base_w32.hpp
  • подробно / workaround.hpp
  • и, наконец, сам shared_ptr.hpp.

Не думаю, что weak_ptr и enable_shared_from_this добавят к этому много файлов.

1 голос
/ 01 мая 2010

BCP работают на уровне компонентов, поэтому любая зависимость между компонентами приводит к увеличению количества файлов.

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

Это должно значительно сократить количество файлов за счет вашего времени.

Было бы совершенно очевидно, что BCP смог бы сделать это за вас: работал на уровне файлов, а не на уровне компонентов и мог позаботиться об условной компиляции.

1 голос
/ 01 мая 2010

Последние версии GCC включают реализацию TR1.

#include <tr1/memory>

Это дает вам все три вещи, которые вы упоминаете, в пространстве имен std::tr1.

...