|  | 
|      | 
|  | 
| 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 ::
| реклама |