![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Design OverviewBoost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 32. Boost.Signals
|
Iterator Adaptor | Purpose |
---|---|
Итератор списка слотов |
Итератор через список слотов, подключенных к сигналу.< |
Адаптер фильтрующего итератора |
Этот фильтрующий адаптер итератора отфильтровывает слоты, которые были отключены, поэтому мы никогда не видим отключенный слот на более поздних стадиях. |
Адаптер Projection Iterator |
Адаптер итератора проекции возвращает ссылку на первый член пары, который представляет собой подключенный слот (например, только объект< |
Адаптер трансформатора |
Этот адаптер преобразователя выполняет< |
Адаптер трансформатора |
Этот адаптер преобразующего итератора вызывает объект функции, возвращаемый путем отсылки к базовому итератору с набором аргументов, данных самому сигналу, и возвращает результат этого вызова слота. |
Адаптер входного кэширования итератора |
Этот адаптер итератора кэширует результат отсылки к базовому итератору. Таким образом, отказ от ссылки на этот итератор несколько раз приведет только к тому, что базовый итератор будет удален один раз; таким образом, слот можно назвать только один раз, но его результат можно использовать несколько раз. |
Игровой автомат Call Iterator |
Перемещается по звонкам в каждый слот. |
Шаблон функции<visit_each
>— это механизм обнаружения объектов, которые хранятся в другом объекте. Шаблон функции<visit_each
>принимает три аргумента: объект для исследования, объект функции посетителя, который вызывается каждым подобъектом, и<int
>. 0.
Третий параметр является лишь временным решением широко распространенного отсутствия надлежащего частичного упорядочивания шаблона функций. Основной шаблон функции<visit_each
>определяет этот тип третьего параметра как<long
>, тогда как любые пользовательские специализации должны указывать свой третий параметр как тип<int
>. Таким образом, даже если сломанный компилятор не может определить порядок между, например, соответствием параметру<T
>и параметру<A<T>
>, он может определить, что преобразование из целого числа 0 в<int
>лучше, чем преобразование в<long
>. Таким образом, упорядочение, определяемое этим преобразованием, достигает частичного упорядочения шаблонов функций ограниченным, но успешным способом. Следующий пример иллюстрирует использование этой техники:
template<typename> class A {}; template<typename T> void foo(T, long); template<typename T> void foo(A<T>, int); A<T> at; foo(at, 0);
В этом примере мы предполагаем, что наш компилятор не может сказать, что<A<T>
>лучше, чем<T
>, и поэтому предполагаем, что шаблоны функций не могут быть упорядочены на основе этого параметра. Тогда преобразование от 0 до<int
>лучше, чем преобразование от 0 до<long
>, и выбирается второй шаблон функции.
Статья Design Overview раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 32. Boost.Signals может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Chapter 32. Boost.Signals ::
реклама |