При использовании ссылок деструктор не нужен. Не подразумевая этого, мы разрешаем захватывать типы с помощью частных или защищенных деструкторов путем ссылки. Для обеспечения согласованности он также должен быть указан при захвате по стоимости.
Более ранняя версия библиотеки использовала имена_1,_2и т.д. вместо,_bи т.д. Это вызвало определенную путаницу, потому что пронумерованные заполнители уже используются с несколько другим значением несколькими другими библиотеками, включая Boost / Std Bind, Boost. Феникс и Бут. MPL. В конце концов я решил, что, поскольку заполнители представляли названные параметры вместо позиционных параметров, буквы были более подходящими, чем цифры.
Boost.Function позволяет использоватьбустер:refдля хранения ссылки на объект функции. Однако в общем случае обращение со ссылками и ценностями одинаково вызывает непоследовательное поведение, о котором трудно рассуждать. Если поднимется. Когда вы копируетелюбой, вы понятия не имеете, является ли новый объект реальной копией или просто новой ссылкой на тот же основной объект. Повышаю. Функция может уйти с рук, потому что она не выставляет никаких мутирующих операций на сохраненном объекте функции.
Другой предложенный метод заключается лишь в том, чтобы впервые сохранить ссылку.
inti=2;anyx=ref(i);anyy=x;// makes a copy
К сожалению, это не относится ко всем случаям использования, поскольку нет надежного способа вернуть такую ссылку из функции. Кроме того, он добавляет накладные расходы, независимо от того, нужен он или нет, так как нам придется добавить флаг к любому, чтобы отслеживать, сохраняет ли он ссылку. (Альтернативный способ хранения этого в методеклонв таблице невероятно сложен для реализации с учетом разъединенных таблиц, которые увеличиваются). TypeErasure использует и все еще добавляет накладные расходы.
Статья Rationale раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 37. Boost.TypeErasure может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.