Вести с полей. 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.
А может и нет — спешить не буду.