Новый триал. Сборка 12556.
Привет всем.
После релиза 3.8, в качестве развлечения, я поигрался с новой возможностью C++ — «rvalue reference» (VS2010). То что раньше частично моделировалось с помощью таких конструкций как structure::t_wrap_vector (смотрите в инструментальную библиотеку провайдера), получило полноценную поддержку со стороны компилятора.
Плюс STL из VS2010 уже активно использует эту штуку, поэтому многие вещи оптимизировались «автоматически». Например, теперь в комбинации std::vector::push_back+std::basic_string можно исключить лишнее копирование строки.
У себя в библиотеке я добавил move-конструктор и move-оператор для structure::t_smart_object_ptr. Это один из самых активно используемых шаблонов в коде провайдера. Погонял тесты — хуже не стало :). Естественно, что эти move-штуки определяются только в случае наличия поддержки со стороны компилятора. Это определяется библиотекой автоматически.
Хотя в настоящее время релизные бинарники провайдера генерируются с использованием компилятора VS2008, переход на VS2010 — это всего лишь вопрос времени. Поэтому будем готовить сани код заранее 🙂
Ну а выложенный триал (собран 2008-ой студией) просто содержит изменения (в лучшую сторону, естественно), которые были внесены в провайдер в процессе проведенных экспериментов. В некоторых случаях все эти новомодные move-штуки вполне заменяются swap-ом объектов. Что и было задействовано. Плюс другая оптимизация «по-мелочи».
Бинарники этого триала прошли стандартное стрессовое тестирование — проблем не обнаружено. Поэтому можно использовать без опасений 🙂
PS. Я даже вытащил из чулана дистрибутив нашего мега-проекта для «недвижимости» и погонял новый провайдер (+FB2.5.1) под ним. Все работает как часы. Хотя база от FB2.0, операционка — виста, а один из модулей той системы собран в BCB3 🙂