Начать работать с Boost, C++ 11

в 16:36, , рубрики: boost, c++, метки:

Хочется на полную начать использовать новый стандарт, но, поскольку, работается сейчас под Windows, на 10 студии(и неизвестно, когда перейду на новую) + новый стандарт много чего позаимствовал в Boost + Boost это большая и серьёзная библиотека + все крутые дядьки, которые внесли не малую долю в развитие C++ советуют ознакомиться с Boost — в общем, думаю, не плохо для начала начать «серьёзно» использовать тот же Boost.
Всё с чем мне приходилось сталкиваться до сегодня — это Smart Pointers(в некоторой степени) и Program_options.
Так вот — в чём суть вопроса:

как, не доходя до крайностей(например, заменой всех new/delete на boost::shared_ptr, unique_ptr и т.д. — «вау, я использую/знаю Boost») начинать немножко вливаться в весь этот огромный Boost и C++11? Конечно же, я могу смотреть на список задач, которые нужно выполнить и на список возможностей Boost — выбирать нужную мне библиотеку, использовать и на этом всё. Но! Хочется понимать основы на которых это всё строится, как это работает, почему именно это, а не то и т.д. Что значит «понимать» для меня? Ну, например, почему, когда «можно» — лучше использовать boost/std::make_shared, вместо shared_ptr<T> ptr(new T(...))? Потому что, в таком случае происходит оптимизация — вместо 2х выделений памяти(собственно, для объекта и для счётчика) происходит только одно… Это всё хорошо — если загуглить, то везде так и пишут, объясняя причину, но мне нужно «на собственные глаза» увидеть это: дебаггером, действительно видно, что в случае с shared_ptr происходит выделение одного куска памяти и для счётчика, и для объекта T, а потом, с помощью размещающего new, происходит инициализация объекта. И сразу же становиться ясно, откуда берётся «недостаток» make_shared — т.е. невозможность использования определённого пользователем функтора для удаления объекта — всё потому, что используется другой функтор, который просто вызывает деструктор напрямую, что и следует от использования размещающего new.

В общем, «грубо» суть вопроса: как использовать(начать использовать) Boost/новые возможности нового стандарта, имея представляния о реализации используемых возможностей? Как Вы, например, начали изучать C++11?

Спасибо.

Автор: Door

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js