пятница, 13 ноября 2015 г.

[prog.c++11] Не, MSVC++12.0 -- это не настоящий C++11 :(

Вчера полдня прикидывал, как можно реализовать хитрый контейнер для хранения упорядоченных по ключу данных. Чтобы при малом количестве элементов данные хранились в vector-е, а при большом -- в set-е или map-е. Но чтобы наружу выставлялись обычные итераторы (или их жалкие подобия), дабы пользователь такого контейнера мог вызвать, скажем, for_each(begin(c),end(c)) и не думать о том, будут ли итерироваться элементы vector-а или set-а. Появилось пару соображений, как это сделать на основе union-ов. Сейчас сел писать тестовый прототип...

И тут до меня доходит, что в MSVS2013 нет поддержки т.н. descriminated unions. Т.е. для VC++12.0 все, что я придумал, не реализуемо. В принципе :(

В общем, с большим удовольствием в январе 2016-го откажусь от поддержки этого компилятора. А оставшиеся полтора месяца нужно как-то дотерпеть :)

четверг, 12 ноября 2015 г.

[prog.c++] Run-time polymorphism vs Compile-time polymorphism. Выбирай. Но осторожно. Но выбирай.

C++ -- это гибридный язык, он поддерживает несколько стилей(парадигм) программирования. Что при проектировании отдельных кусков программы заставляет делать выбор в пользу одного или другого стиля. В частности это касается полиморфизма: будет ли код использовать run-time полиморфизм или же compile-time.

среда, 11 ноября 2015 г.

[prog.c++11] SObjectizer обновился до версии 5.5.11

Состоялся релиз версии 5.5.11. В этой версии закончено изменение диспетчеров, начатое в версии 5.5.10. Теперь для любого диспетчера можно указать, какой тип объекта синхронизации должен использоваться очередями сообщений этого диспетчера.