Вести с полей. C++17
Текущие тестовые сборки IBProvider (v5.14.0.33732) откомпилированы с указанием режима совместимости с C++17.
Пока в коде IBP ничего из C++17 не используется. Но вот STL таки да — уже из C++17.
Хотя нет. Я же «if constexpr» задействовал во встроенном zlib1, чтобы изничтожить часть предупреждений компилятора…
Из вещей, которые уже очень хочется начать использовать в самом IBProvider:
1. Сокращенное определение вложенных пространств имен
namespace ibp::db_client::remote_fb::api::p12{ .... }
вместо
namespace ibp{namespace db_client{namespace remote_fb{namespace api{namespace p12{ .... }}}}}
2. Fold expressions:
//Код из инсталлятора ADO.NET провайдера, который уже переехал на C++17. template<typename... Args> void BA_ErrorUtils::Throw__Error (HRESULT const hr, BA_Error_SrcID const srcID, BA_Error_MsgID const errMsgCode, Args&&... args) { assert(FAILED(hr)); BA_Error exc(hr,srcID,errMsgCode); (exc<<...<<std::forward<Args>(args)); exc.raise(); }//Throw__Error
Но это все потом.
А пока — v5.14 это тот же v5.13.
—
Вышеобозначенные сборки (v5.14.0.33732) уже проехали через нагрузочное тестирование (которое сейчас работает как хорошо отрегулированный двигатель — без спотыканий).
Так что, думаю, на этой неделе они уйдут в релиз v5.14.
А может и нет — спешить не буду.