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

make_unique

Boost , ,

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

make_unique

Введение
Синопсис
Общие требования
Свободные функции
История

Introduction

Файл заголовкапредоставляет перегруженный шаблон функций<make_unique>для удобного создания<unique_ptr>объектов.

Synopsis

namespace boost {
    template<class U> // U is not array
    unique_ptr<U> make_unique();
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
    template<class U, class... Args> // U is not array
    unique_ptr<U> make_unique(Args&&... args);
#endif
    template<class U> // U is not array
    unique_ptr<U> make_unique(U&& value);
    template<class U> // U is T[]
    unique_ptr<U> make_unique(size_t size);
    template<class U> // U is not array
    unique_ptr<U> make_unique_noinit();
    template<class U> // U is T[]
    unique_ptr<U> make_unique_noinit(size_t size);
}

Common Requirements

template<class U>
    unique_ptr<U> make_unique(args);
template<class U>
    unique_ptr<U> make_unique_noinit(args);

Эффекты:Выделяет память для объекта типа<U>(или<T[size]>, когда<U>является<T[]>, где<size>определяется из<args>, как указано конкретной перегрузкой). Объект инициализируется из<args>, как указано бетонной перегрузкой. Если бросается исключение, функции не имеют эффекта.

Возвращение:Пример<unique_ptr>, который хранит и владеет адресом вновь построенного объекта.

Пост-условия:<r.get() != 0>, где<r>является обратным значением.

Броски:<bad_alloc>или исключение, выброшенное из инициализации объекта.

Замечания:

Если объект немассивного типа<T>указан для инициализации до значения<value>или до<T(list...)>, где<list...>представляет собой список аргументов конструктора,<make_unique>должен выполнить эту инициализацию посредством выражения<new T(value)>или<new T(list...)>соответственно.

Если объект типа<T>определен как инициализированный по значению,<make_unique>должен выполнить эту инициализацию посредством выражения<new T()>.

Если указан объект типа<T>, подлежащий инициализации по умолчанию,<make_unique_noinit>должен выполнить эту инициализацию посредством выражения<new T>.

Free Functions

template<class U, class... Args>
unique_ptr<U> make_unique(Args&&... args);

Возвращение:Уникальный_ptr для объекта типа<U>, инициализированный до<U(forward<Args>(args)...)>.

Замечания:Эта перегрузка должна участвовать в разрешении перегрузки только тогда, когда<U>не является типом массива.

Примеры:

unique_ptr<float> p1 = boost::make_unique<float>();
unique_ptr<point> p2 = boost::make_unique<point>(x, y);
template<class U>
unique_ptr<U> make_unique(U&& value);

Возвращение:Уникальный_ptr для объекта типа<U>, инициализированный до<move(value)>.

Замечания:Эта перегрузка должна участвовать в разрешении перегрузки только тогда, когда<U>не является типом массива.

Примеры:

unique_ptr<string> p1 = boost::make_unique<string>({'a', 'b'});
unique_ptr<point> p2 = boost::make_unique<point>({-10, 25});
template<class U>
unique_ptr<U> make_unique(size_t size);

Возвращение:Уникальный_ptr для объекта типа с инициализацией значения<T[size]>.

Замечания:Эта перегрузка должна принимать участие в разрешении перегрузки только тогда, когда<U>имеет форму<T[]>.

Примеры:

unique_ptr<double[]> p1 = boost::make_unique<double[]>(4);
unique_ptr<int[][2]> p2 = boost::make_unique<int[][2]>(2);
template<class U>
unique_ptr<U> make_unique_noinit();

Возвращение:Уникальный_ptr для объекта типа, инициализированного по умолчанию<U>.

Замечания:Эта перегрузка должна участвовать в разрешении перегрузки только тогда, когда<U>не является типом массива.

Примеры:

unique_ptr<float> p1 = boost::make_unique_noinit<float>();
unique_ptr<point> p2 = boost::make_unique_noinit<point>();
template<class U>
unique_ptr<U> make_unique_noinit(size_t size);

Возвращение:Уникальный_ptr для по умолчанию инициализированного объекта типа<T[size]>.

Замечания:Эта перегрузка должна принимать участие в разрешении перегрузки только тогда, когда<U>имеет форму<T[]>.

Примеры:

unique_ptr<double[]> p1 = boost::make_unique_noinit<double[]>(4);
unique_ptr<int[][2]> p2 = boost::make_unique_noinit<int[][2]>(2);

History

Январь 2014. Глен Фернандес внес вклад в реализацию make_unique для объектов и массивов.


$Date$

<маленький>Копирайт 2012-2014 Глен Фернандес. Распределенные под Boost Software License, Version 1.0. Сопутствующий файл LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.[ORIG_END] -->

Статья make_unique раздела может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 16:58:09/0.0064749717712402/0