Interface implementation base::release

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
std::size_t release() noexcept;

Метод, реализующий декремент счетчика ссылок на объект interface_implementation_base и, если в результате счетчик становится нулевым, уничтожает объект interface_implementation_base.

Возвращаемое значение:
Результирующее значение счетчика ссылок.

Метод определен независимо от политики interface_ref_ctr_policy, которая специализирует C++ шаблон interface_implementation_base. Если политика не определяет подсчета ссылок, реализация метода interface_implementation_base::release всегда возвращает 0, однако при этом уничтожения объекта не производится - в отличие от случая, когда политикой interface_ref_ctr_policy определяется подсчет ссылок. В последнем случае, вызов делегируется объекту-политике и, если результирующее значение счетчика ссылок оказывается нулевым, производится уничтожение объекта interface_implementation_base путем вызова метода interface_implementation_base::dispose.

Метод определен как noexcept, если политика interface_ref_ctr_policy не определяет подсчета ссылок, или если определенный политикой метод release сам является noexcept.