0xd34df00d 17.07.2012 14:11 Azoth_primary

Я просто оставлю это здесь:
inline QWeakPointer(X *ptr) : d(ptr ? d→getAndRef(ptr) : 0)

Пруф в qsharedpointer_impl.h.

Recommended by:

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

and @DZhon
1. kb 17.07.2012 14:12

што

2. kbkb /1 17.07.2012 14:13

что такое d?

3. 0xd34df00dkb /1 17.07.2012 14:13 Azoth_primary

Тебя не смущает инициализация d значением, зависимым от d, которое при этом в момент получения значения не инициализировано?

4. 0xd34df00dkb /2 17.07.2012 14:13 Azoth_primary

Неважно же.

5. kb0xd34df00d /3 17.07.2012 14:14

это меня очень даже смущает, в общем-то как и возвращение нуля (хотя тут я не знаю как принято у них). просто вообще сложно понять/ощутить чего хотели.

6. 0xd34df00dkb /5 17.07.2012 14:14 Azoth_primary

Ну инициализировать нулем еще куда ни шло.

7. DZhon 17.07.2012 20:26

Несмотря на то, что этот трюк работает, если getAndRef, но это же UB, блядь!
qobject_cast через подобные подвыверты сделан, кстати говоря.

8. DZhonDZhon /7 17.07.2012 20:27

если getAndRef не обращается к полям*

9. hirthwork 17.07.2012 20:27 mcabber9487B8B8

it's a (boots)trap

10. hirthworkDZhon /8 17.07.2012 20:28 mcabber9487B8B8

если он статический, то вообще всё работаэ

11. 0xd34df00dDZhon /8 17.07.2012 20:28 Azoth_primary

То это UB.

12. 0xd34df00dDZhon /7 17.07.2012 20:29 Azoth_primary

Ну, там хотя бы UB нет настолько явного.

13. DZhon 17.07.2012 20:30

Да, еще поднасрать на голову Qt.
Вот был тормозной QDirModel для QTreeView, сделали отдельный QFileSystemModel, который внутри дергает поток для фетча файловой системы (кстати, почему поток а не через пул или QtConcurrent, тоже хз), так оно же публикует результаты в один замах, без использования fetchMore/canFetchMore, поэтому один хуй, что с потоками, что без, при открытии C:\Windows\System32 видим лаги гуи.

14. DZhon0xd34df00d /11 17.07.2012 20:31

Да, это оно.

15. 0xd34df00dDZhon /13 17.07.2012 20:33 Azoth_primary

Я молчу про мой сегодняшний баттхерт от того, что оно не знает про clang. Вообще. Поэтому считает, что шланг не может в initializer lists и прочее.

Do you really want to delete ?