- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
template<typename U>
shared_ptr(const shared_ptr<U> & ptr) throw()
: m_value(0)
, m_ref_count(0)
{
m_value = static_cast<T *>(ptr.get());
if(m_value)
{
m_ref_count = reinterpret_cast<const shared_ptr &>(ptr).m_ref_count;
++*m_ref_count;
}
}
defecate-plusplus 09.06.2013 11:08 # −7
Xom94ok 09.06.2013 11:32 # −7
defecate-plusplus 09.06.2013 11:46 # −8
Xom94ok 09.06.2013 11:56 # −7
defecate-plusplus 09.06.2013 12:06 # −6
в бусте/стд этот самый ref count потокобезопасный
надеюсь, ++*m_ref_count об этом курсе
Xom94ok 09.06.2013 12:09 # −6
defecate-plusplus 09.06.2013 12:56 # −9
чем вызвано такое старообрядчество? работает на 2003 - отойди и не трожь?
Xom94ok 09.06.2013 14:13 # −7
Вроде того. Коллеги пишут на подмножестве плюсов "си с классами", вылавливая по полдня причины Access Violation и утечек памяти. Да чего уж там, даже попытка внедрить использование vector вместо массивов на malloc/realloc провалилась :)
defecate-plusplus 09.06.2013 14:31 # −6
roman-kashitsyn 09.06.2013 16:39 # −7
Abbath 10.06.2013 01:11 # −1
bormand 09.06.2013 13:13 # −9
Однопоточный атомик без поддержки многопоточности.
roman-kashitsyn 09.06.2013 12:13 # −10
std::tr1::shared_ptr в такой древней студии ещё нет...
bormand 09.06.2013 14:19 # −9
Тарас, ты не одинок.
TarasB 09.06.2013 16:15 # −11
Разве что полное мудачество с моей стороны - это смириться с отсутствием встроенного в 2003 <array>, не написать свой и использовать сырые массивы. Несколько раз наступал на грабли.
Soul_re@ver 09.06.2013 16:40 # −11
Meanwhile in 2011:
Ещё, кстати, Safe STL есть.
TarasB 09.06.2013 17:03 # −9
Я могу понять, зачем может понадобитсья оператор, делающий проверки в релизе, ну мало ли там парноидальный случай, но ёпт, нахуя вообще нужен оператор, не проверяющий в дебаге? Мне эти крестоблядские тонкости не понять, наверное.
defecate-plusplus 09.06.2013 21:55 # −7
да и в релизе всякая хуита от микрософта _SCL_SECURE_* тоже может присутствовать
просто может конкретно в 2003 этого нет
TarasB 10.06.2013 09:47 # −12
Только после моих правок в исходниках СТЛ
defecate-plusplus 10.06.2013 09:51 # −13
TarasB 10.06.2013 09:57 # −11
Чтобы я что-то специально выключал, не помню, что изначально было, то и поставил, только исключения отрубил, кстати тоже ради их отсутствия пришлось дохрена в исходниках СТЛ править, и всё равно одно предупреждение вылазит, которое лечится только директивой "не выдавать предупреждение номер не помню".
Psionic 10.06.2013 12:03 # −14
defecate-plusplus 10.06.2013 12:12 # −10
bormand 10.06.2013 13:35 # −13
defecate-plusplus 10.06.2013 13:43 # −11
а про сишку до сих пор актуально