0xd34df00d
17.07.2012 14:11 Azoth_primary
Я просто оставлю это здесь:
inline QWeakPointer(X *ptr) : d(ptr ? d→getAndRef(ptr) : 0)
Пруф в qsharedpointer_impl.h.
што
что такое d?
Тебя не смущает инициализация d значением, зависимым от d, которое при этом в момент получения значения не инициализировано?
Неважно же.
это меня очень даже смущает, в общем-то как и возвращение нуля (хотя тут я не знаю как принято у них). просто вообще сложно понять/ощутить чего хотели.
Ну инициализировать нулем еще куда ни шло.
Несмотря на то, что этот трюк работает, если getAndRef, но это же UB, блядь!
qobject_cast через подобные подвыверты сделан, кстати говоря.
если getAndRef не обращается к полям*
it's a (boots)trap
если он статический, то вообще всё работаэ
То это UB.
Ну, там хотя бы UB нет настолько явного.
Да, еще поднасрать на голову Qt.
Вот был тормозной QDirModel для QTreeView, сделали отдельный QFileSystemModel, который внутри дергает поток для фетча файловой системы (кстати, почему поток а не через пул или QtConcurrent, тоже хз), так оно же публикует результаты в один замах, без использования fetchMore/canFetchMore, поэтому один хуй, что с потоками, что без, при открытии C:\Windows\System32 видим лаги гуи.
Да, это оно.
Я молчу про мой сегодняшний баттхерт от того, что оно не знает про clang. Вообще. Поэтому считает, что шланг не может в initializer lists и прочее.