Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ALLOCATOR_DECL
Возвращает шаблон класса распределителя.
#define ALLOCATOR_DECL(cache, sync, name) <alloc_template>
Замечания
Макрос дает определение template <class Type> class name {.....} шаблона и специализацию template <> class name<void> {.....} , которая вместе определяет шаблон класса распределителя, использующий фильтр sync синхронизации и кэш типа cache.
Для компиляторов, которые могут компилировать повторную привязку, итоговое определение шаблона выглядит следующим образом:
struct rebind
{ /* convert a name<Type> to a name<Other> */
typedef name<Other> other;
};
Для компиляторов, которые не могут компилировать повторную привязку, итоговое определение шаблона выглядит следующим образом:
template <class Type<class name
: public stdext::allocators::allocator_base<Type,
sync<stdext::allocators::rts_alloc<cache>>>
{
public:
name() {}
template <class Other>
name(const name<Other>&) {}
template <class Other>
name& operator= (const name<Other>&)
{
return *this;
}
};
CACHE_CHUNKLIST
Создает stdext::allocators::cache_chunklist<sizeof(Type)>.
#define CACHE_CHUNKLIST <cache_class>
CACHE_FREELIST
Создает stdext::allocators::cache_freelist<sizeof(Type), max>.
#define CACHE_FREELIST(max) <cache_class>
CACHE_SUBALLOC
Создает stdext::allocators::cache_suballoc<sizeof(Type)>.
#define CACHE_SUBALLOC <cache_class>
SYNC_DEFAULT
Создает фильтр синхронизации.
#define SYNC_DEFAULT <sync_template>
Замечания
Если компилятор поддерживает компиляцию как однопоточных, так и многопоточных приложений, для однопоточных приложений макрос создает stdext::allocators::sync_none; для всех остальных случаев он создает stdext::allocators::sync_shared.