0xd34df00d 15.02.2012 09:07 Azoth_primary

Лол, похоже, в QSharedPointer не осилили стирание типов. Еще один аргумент в пользу std::shared_ptr.

Recommended by:

@pooq: моча съела говно

and @magog
1. werehuman 15.02.2012 09:07 Psi+

что за стирание типов?

2. 0xd34df00dwerehuman /1 15.02.2012 09:08 Azoth_primary

Это чтобы в точке инстанциирования самого смартпоинтера не нужно было полное объявление класса для корректного вызова его деструктора.

3. k0st1x 15.02.2012 09:08 Work

я не сиплюсплюсник, но объясни, зачем юзать кутишный или бустовский shared_ptr, если он есть в std?

4. 0xd34df00dk0st1x /3 15.02.2012 09:08 Azoth_primary

Потому что в std он есть недавно. Олсо, я поэтому и написал про std::shared_ptr.

5. werehumank0st1x /3 15.02.2012 09:08 Psi+

он там совсем недавно появился

6. hirthwork 15.02.2012 09:09 mcabber

шаред-пойнтер — ошибка архитектуры

7. 0xd34df00dk0st1x /3 15.02.2012 09:09 Azoth_primary

Олсо, ряд Qt-упорышей фанатично кричит про кутишные смартпоинтеры разных видов, типа, для консистентности.

8. werehuman0xd34df00d /2 15.02.2012 09:09 Psi+

ты умеешь объяснить так, чтобы нихуя не было понятно. Что такое "инстанциирование"?

9. 0xd34df00dhirthwork /6 15.02.2012 09:09 Azoth_primary

Нет.

10. hirthwork0xd34df00d /9 15.02.2012 09:09 mcabber

да

11. werehumanwerehuman /8 15.02.2012 09:09 Psi+

в общем, QSharedPointer не осилил виртуальные деструкторы, да?

12. 0xd34df00dwerehuman /8 15.02.2012 09:11 Azoth_primary

std::shared_ptr<Shit> MyShit_; // здесь мы инстанциировали шаблон шаред_птра типом Shit.

С шаред_поинтером можно написать, например, в хедере так:
class Shit;
std::shared_ptr<Shit> MyShit_;
а заинклюдить определение Shit'а только в .cpp, и все равно деструктор вызовется правильно и корректно. С другими смартпоинтерами такого не бывает — например, auto_ptr/unique_ptr требуют полного определения класса в точке инстанциирования себя, а не в точке инстанциирования своего деструктора.

13. hirthworkwerehuman /11 15.02.2012 09:11 mcabber

нет. QSharedPointer просто не умеет работать с incomplete типами

14. 0xd34df00dwerehuman /11 15.02.2012 09:11 Azoth_primary

Не совсем. Он не осилил forward declaration'ы, если уж об этом говорить.

15. werehuman0xd34df00d /14 15.02.2012 09:12 Psi+

вообще не понимаю, как это можно не осилить

16. 0xd34df00dhirthwork /10 15.02.2012 09:12 Azoth_primary

Манда.

17. 0xd34df00dwerehuman /15 15.02.2012 09:12 Azoth_primary

Окей, набросаешь за 10 минут смартпоинтер, который это осилит?

18. magog0xd34df00d /17 15.02.2012 09:13 Azoth@Work

затролел

19. hirthwork0xd34df00d /16 15.02.2012 09:13 mcabber

нет ты

20. 0xd34df00dhirthwork /19 15.02.2012 09:14 Azoth_primary

Нет, серьезно. Нахрена ручное управление временем жизни объекта, когда стратегия «кто последний, тот и папа^W убивает» вполне подходит?

21. werehuman0xd34df00d /17 15.02.2012 09:14 Psi+

ну в смысле сначала объявляешь метод. Потом где-то там, за пределами описания класса, пишешь код для метода. Это есть forward declaration? Или что?

22. 0xd34df00dwerehuman /21 15.02.2012 09:14 Azoth_primary

-_________\\\
Форвард декларайшн типа. Это когда пишешь class Shit;, чтобы компилятор знал, что такой тип вообще есть, но не знал, что там внутри.

23. magogwerehuman /21 15.02.2012 09:15 Azoth@Work

Ггг. Тоесть ты не представляешь, как то можно не осилить, а сам даже не представляешь, что это такое?

24. werehumanmagog /23 15.02.2012 09:15 Psi+

а я это и спрашиваю, разве нет?

25. magogwerehuman /24 15.02.2012 09:15 Azoth@Work

у меня от тебя верехуман!

26. 0xd34df00dwerehuman /24 15.02.2012 09:15 Azoth_primary

Это тоже fwdecl, но нужно различать function forward declaration и class/type forward declaration.
В общем, иди пиши на п-тоне, плюсцы не для тебя :3

27. werehumanmagog /25 15.02.2012 09:15 Psi+

отвечай на мой ответ

28. hirthwork0xd34df00d /20 15.02.2012 09:16 mcabber

затем что внезапно этих последних может оказаться не один. ты будешь работать с объектом то через одного «папу», то через другого, а потом окажется, что они на два разных объекта указывали. + шаред пойнтеры требуют локов при работе со счётчиком ссылок, а это говно

29. magog0xd34df00d /26 15.02.2012 09:16 Azoth@Work

поэтому его и не взяли плюсоебом

30. hirthworkwerehuman /21 15.02.2012 09:16 mcabber

//_\\

31. 0xd34df00dhirthwork /30 15.02.2012 09:17 Azoth_primary

Дададад.

32. 25380xd34df00d /26 15.02.2012 09:17 tertium datur

это не те forward declaration которых мы ищем

33. werehumanhirthwork /30 15.02.2012 09:17 Psi+

это у всех плюсоёбов чсв непомерно высокое, или это мне так не повезло столкнуться с вами?

34. 0xd34df00dhirthwork /28 15.02.2012 09:17 Azoth_primary

ЧЕ
Какие, блядь, два разных объекта, работать — через другого. Ты че несешь вообще? Ты можешь заткнуться? Вообще охуеть.

35. 0xd34df00dwerehuman /33 15.02.2012 09:17 Azoth_primary

Нет, мы просто любим издеваться над неосилившими плюсцы :3

36. werehuman0xd34df00d /34 15.02.2012 09:17 Psi+

давайте, докажите друг другу, что вы все не шарите

37. 2538werehuman /33 15.02.2012 09:19 tertium datur

это как если бы они научились вырезать лазером опухоли, а потом работали этим же лазером, выпиливая блестящие номерки на двери.

38. werehuman2538 /37 15.02.2012 09:19 Psi+

ну, проблемы велосипедов с квадратными колёсами их не беспокоят, это давно известно

39. Rayslava0xd34df00d /12 15.02.2012 09:20

А вот это хорошо, что умеет.
Личкрафты на него переходят в качестве дефолтного стандарта?

40. 2538werehuman /38 15.02.2012 09:20 tertium datur

ТАМ КУДА МЫ ОТПРАВИМСЯ КОЛЁСА НЕ НУЖНЫ

41. magogRayslava /39 15.02.2012 09:20 Azoth@Work

давно уже

42. hirthworkwerehuman /33 15.02.2012 09:20 mcabber

это у меня. а дедфуд на меня ориентируется

43. Rayslavamagog /41 15.02.2012 09:21 Office

А я, как мудак, из буста их тащу -_-
Итак, вечер рефакторинга

44. 0xd34df00dRayslava /39 15.02.2012 09:23 Azoth_primary

Они и так по дефолту были на shared_ptr, просто из буста.

45. Rayslava0xd34df00d /44 15.02.2012 09:23 Office

Ну да. Теперь можно отключать буст и оставлять std.

46. werehumanRayslava /45 15.02.2012 09:24 Psi+

мне вообще нравится, как вы положили болт на стабильные версии конпелятора

47. hirthworkRayslava /45 15.02.2012 09:24 mcabber

ещё один всё понял

48. 0xd34df00dwerehuman /46 15.02.2012 09:24 Azoth_primary

Че. Мы ориентируемся на gcc 4.5 сейчас.

49. hirthworkwerehuman /46 15.02.2012 09:24 mcabber

мне тоже. я продолжаю насиловать C++03

50. werehuman0xd34df00d /48 15.02.2012 09:25 Psi+

есть ещё 4.4, который много где используется

51. Rayslavawerehuman /50 15.02.2012 09:25 Office

Да и похуй же. В генте 4.5 и ниибёд.

52. 0xd34df00dwerehuman /50 15.02.2012 09:26 Azoth_primary

Например?

53. 0xd34df00dRayslava /51 15.02.2012 09:26 Azoth_primary

Уже даже в доебане тестинге 4.6. Как в генте 4.6 размаскируют, перейду на него — хотет range-based for!

54. hirthwork0xd34df00d /52 15.02.2012 09:27 mcabber

в RHEL6 4.2, емнип. в FreeBSD 8 тоже

55. Rayslava0xd34df00d /53 15.02.2012 09:27 Office

+1

56. 0xd34df00dhirthwork /54 15.02.2012 09:27 Azoth_primary

Ну, они соснули.

Do you really want to delete ?