Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Struct template constructible_with_allocator_prefix

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Boost.Container Header Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Struct template constructible_with_allocator_prefix

boost::container::constructible_with_allocator_prefix

Synopsis

// In header: <boost/container/uses_allocator.hpp>
template<typename T> 
struct constructible_with_allocator_prefix {
  // public data members
  static const bool value;
};

Description

Замечание: если специализация buildible_with_allocator_prefix::value верна, указывает, что T может быть построен с помощью allocator_arg и T::allocator_type в качестве первых двух аргументов конструктора. В идеале все конструкторы T (включая конструкторы копирования и перемещения) должны иметь вариант, который принимает эти два исходных аргумента.

Требуется: специализация Constructible_with_allocator_prefix:: значение истинно, T должен иметь вложенный тип, allocator_type и по меньшей мере один конструктор, для которого allocator_arg_t является первым параметром, а allocator_type — вторым параметром. Если не все конструкторы T могут быть вызваны с этими начальными аргументами, и если T используется в контексте, где контейнер должен вызвать такого конструктора, то программа плохо сформирована.

<template <class T, class Allocator = allocator<T> > class Y { public: typedef Allocator allocator_type;>

<// Default constructor with and allocator-extended default constructor Y(); Y(allocator_arg_t, const allocator_type& a);>

<// Copy constructor and allocator-extended copy constructor Y(const Y& yy); Y(allocator_arg_t, const allocator_type& a, const Y& yy);>

<// Variadic constructor and allocator-extended variadic constructor template<class ...Args> Y(Args&& args...); template<class ...Args> Y(allocator_arg_t, const allocator_type& a, BOOST_FWD_REF(Args)... args); };>

<// Specialize trait for class template Y template <class T, class Allocator = allocator<T> > structconstructible_with_allocator_prefix<Y<T,Allocator> > { static const bool value = true; };>

<>

Примечание: Эта черта является обходным путем, вдохновленным "N2554: Модель выделенного распределителя (Rev 2)" (Pablo Halpern, 2008-02-29) для обратного переноса модели выделенного распределителя на C++03, поскольку в C++03 нет механизма для обнаружения, может ли тип быть построен из произвольных аргументов. Приложения, нацеленные на переносимость с несколькими компиляторами, всегда должны определять эту черту.

В соответствии с компиляторами C++11 или компиляторами, поддерживающими выражения SFINAE (когда BOOST_NO_SFINAE_EXPR НЕ определен), эта черта игнорируется, и правила C++11 будут использоваться для определения того, должен ли тип быть построен с аргументами суффикса или префикса распределителя.


PrevUpHomeNext

Статья Struct template constructible_with_allocator_prefix раздела The Boost C++ Libraries BoostBook Documentation Subset Boost.Container Header Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Boost.Container Header Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:45:12/0.025693893432617/1