interfaces/iinfo.h поменял @ все личкрафты перекомпилял.
Это недостаток, конечно же, да. А вот были бы в плюсах модули...
*c++
Вообще, на самом деле, так как moc не может в шаблоннутые классы с макро Q_OBJECT, приходится применять следующий паттерн.
Определяется класс типа class ObjectBase : public QObject { Q_OBJECT ... };, в котором определяются все нужные сигналы и слоты, а затем определяется не-Q_OBJECT-шаблонный класс Object как-то ... more →
Я, кажется, совсем ебанулся с темплейтами и пихаю полиморфизм времени компиляции по параметрам запроса в структуру, инстанциируемую нужным элементом енама. А так как QObject не может в темплейты, то получается класс-аггрегатор.
Типичный кутимокод — класс, который делает много чего совсем несвязанного. Наружу выставлены функции, вроде как дергающие что нужно, но на деле они просто дергают одну Большую Мастер-Функцию, которая внутри через огромный switch все и делает.
Пиздец.
То, что Qt так активно использует препроцессор — полный отстой. Например, похоже, нельзя написать вариадик типа void Call (const char *name, Args... args);, который бы разворачивался в вызов QMetaObject::invokeMethod (name, Q_ARG (T1, arg1), Q_ARG (T2, arg2), ...), где Q_ARG — макрос, принимающий тип и переменную ... more →
Иногда легче сделать ручное управление памятью, нежели обмазываться-перемазываться shared/weak_ptr'ами. Логика не та.
Реквестирую умный греп: нужно найти по проекту все структуры в анонимных неймспейсах.
Джва часа проебался с непонятно как портящимся стеком и вообще полной пиздой от boost::optional, а оказалось, что программа линкуется с Boost 1.47, а optional юзает из 1.46.
Ебаный симейк.
Uniform initialization syntax тоже неговно, хоть с ним код еще понятнее и поддерживаемее:
emit userStatusChanged ({-1, 0, statusId, email, QString (), title, desc, features, ua});
Впрочем, в одном Анализер был прав. Теперь и я вместо return Group_.isEmpty () ? QStringList () : QStringList (Group_); пишу
QStringList result;
if (!Group_.isEmpty ())
result << Group_;
return result;
Написал свой первый в жизни вариадик. Кончил.
Нужно сериализовать в особый формат наборы из всяких разных чисел и строк. Можно делать везде конкатенацию, типа, result = ToMRIM (num1) + ToMRIM (num2) + ToMRIM (shit) + ..., но это как-то криво. А с вариадиками все очень просто и охуенно:
QByteArray ToMRIM (const ... more →
Вот и пригодились вложенные лямбды:
auto idHasName = [&info] (const QString& name)
{ return std::find_if (info.Identities_.begin (), info.Identities_.end (), [&name] (decltype (*info.Identities_.begin ()) id) { return id.name () == name; }) != info.Identities_.end (); };
Эта маленькая локальная функция ищет среди ... more →
В общем, на предыдущий пост все равно никто не прореагировал, так что пишу разгадку: http://jabapls.ws/cpp-implicit-return-mo...
Недавние проблемы с implicit move ctor заставили меня чуток поковыряться в теме, и, в общем, в очередной раз было выяснено, что C++0x — ебаное непродуманное говно.
Рассмотрим две программы: http://paste.pocoo.org/show/525322/ и http://paste.pocoo.org/show/525323/ . Отличаются тремя строками кода, не имеющими ... more →
Почитал камменты на cpp-next. Абрахамс какой-то улыбчивый, мягкий и неконфликтный дохуя, аж не вяжется с образом матерого плюсоеба.
Лямбды без вывода типов правда говно:
std::for_each (data→contactList.begin (), data→contactList.end (), [&allContacts] (const std::pair<std::string, MSN::Buddy*>& pair) { allContacts [pair.first] = pair.second→lists & (MSN::LST_AB | MSN::LST_AL | MSN::LST_BL); });
Ну и как там std::pair вывести бы самим?
А теперь вообще можно не писать обычных free-функций. http://paste.pocoo.org/show/523844/
gcc 4.5 и 4.6 ведут себя по-разному со статическими функциями в лямбдах. Например, для статической функции tr() такой код gcc 4.5 прохавает, а 4.6 уже нет, ругаться будет на незахваченный this:
[] () { tr ("test"); }
Впрочем, при портировании pre-C++0x-кода на C++0x можно забавно выстрелить себе в ногу, захватив auto_ptr в лямбду по значению, например.
Я совсем зафапался на C++0x, да. Код охуительно сокращается: http://paste.pocoo.org/show/517733/
А вот это оче охуенно. Вместо того, чтобы писать
if (!version.name ().isEmpty ())
html += tr ("Name:") + ' ' + version.name () + "<br />";
if (!version.version ().isEmpty ())
html += tr ("Version:") + ' ' + version.version () + "<br />";
if (!version.os ().isEmpty ())
html += tr ("OS:") + ' ' + version.os () + ... more →
Зато теперь вместо ужасов типа
new FetchQueue (boost::bind (&QXmppVCardManager::requestVCard, &Client_→vCardManager (), _1));
я могу писать что-то типа
new FetchQueue ([this] (const QString& str) { Client_→vCardManager ().requestVCard (str); });
По длине, правда, почти так же :( Плюсы все же ужасно вербозны.
Впилил кеширование кучи ресурсов в азотх. Hit rate охуенен, ведь число хитов растет линейно со временем работы программы, а число miss'ов практически не изменяется. Соответственно, экономится 1-10 обращений в секунду к харду (какие из них попадут в кеш ОС, а какие таки приведут к обращению к харду — другой вопрос). ... more →
*c++ is used by:
0xd34df00d
0xd34df00d
Пахом
Pahom
Hirthwork McGillah
hirthwork
analizer
analizer
профессиональный говноед
ulidtko
werehuman
werehuman
0x2207
0x2207
няша
generatorglukoff
4DA
4da
Mагог Магогович
magog
dorfe
dorfe
Оранжевус Охуеннус
utros
gelraen
gelraen
Darth Bricktop
Like-all
jabber
jabber
kb
kb
16+
238328
Cthulhu
Cthulhu
failman
failman
Джордж Ричмонд
richmond
Crazy_Owl
Crazy_Owl
beardog
beardog
SirAnthony
SirAnthony
amd63
amd63
Monah Tuk
hatred
Nico-izo
Nico-izo
nobiiru
nobiiru
K900
K900
Лисий хвост
madInsane
asmer
asmer
Minoru
Minoru
chemikadze
chemikadze
anonymous_owl
anonymous_owl
Артём
astecenko
Артс
arts
Anatoly Kalin
m4n71k0r
Дэш
dash
folex
folex
Maxim Kirenenko
part1zano
Ky6uk
Ky6uk
Michael Pogoda
MPogoda
taras
taras
18+ Запрещено для детей.
hedgehog
Andrew Motrenko
werdn
lexszero
lexszero
Rejjin
Rejjin
proton
proton
eurekafag
eurekafag
Spiritual ecstasy
rapture
Enoh
Enoh
rogaboru
rogaboru
Thordendal
z56371410
mva
mva
Fess
zetoke
anoos
anoos
DOMr
DOMr
Bender Bending Rodríguez
DJm00n
Смерть Неизбежна
lHooFool
nexeuse
nexeuse
nstm0
nstm0
Илья Силаков-Волынский
iLeamare
Хотеть!
xotetb
Haomand
Haomand
RainerGomes
RainerGomes
0xd34df00d
Pahom
hirthwork
analizer
ulidtko
werehuman
0x2207
generatorglukoff
4da
magog
dorfe
utros
gelraen
Like-all
jabber
kb
238328
Cthulhu
failman
richmond
Crazy_Owl
beardog
SirAnthony
amd63
hatred
Nico-izo
nobiiru
K900
madInsane
asmer
Minoru
chemikadze
anonymous_owl
astecenko
arts
m4n71k0r
dash
folex
part1zano
Ky6uk
MPogoda
taras
hedgehog
werdn
lexszero
Rejjin
proton
eurekafag
rapture
Enoh
rogaboru
z56371410
mva
zetoke
anoos
DOMr
DJm00n
lHooFool
nexeuse
nstm0
iLeamare
xotetb
Haomand
RainerGomes