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

Bypassing unnecessary default construction

Boost , Boost.Optional , Quick Start

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

Предположим, что у нас есть класс<Date>, который не имеет конструктора по умолчанию: нет хорошего кандидата на дату по умолчанию. У нас есть функция, которая возвращает две даты в виде<boost::tuple>:

boost::tuple<Date, Date> getPeriod();

В другом месте мы хотим использовать результат<getPeriod>, но хотим, чтобы были названы две даты:<begin>и<end>. Мы хотим реализовать что-то вроде «множественных значений возврата»:

Date begin, end; // Error: no default ctor!
boost::tie(begin, end) = getPeriod();

Вторая линия уже работает, это возможностиBoost. Туплебиблиотека, но первая строка не будет работать. Мы могли бы установить некоторые придуманные начальные даты, но это сбивает с толку и может быть неприемлемой стоимостью, учитывая, что эти значения будут перезаписаны в следующей строке в любом случае. В этом может помочь<optional>:

boost::optional<Date> begin, end;
boost::tie(begin, end) = getPeriod();

Он действует потому, что внутри<boost::tie>на<optional<T>>вызывается перемещение от<T>, которое внутренне называется перемещением-конструктором<T>.


PrevUpHomeNext

Статья Bypassing unnecessary default construction раздела Boost.Optional Quick Start может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Quick Start ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 04:02:35/0.00337815284729/0