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

ref

Boost , Chapter 1. Boost.Core , Chapter 1. Boost.Core

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

ref

Authors

  • Jaakko Järvi
  • Петр Димов
  • Дуглас Грегор
  • Дэйв Абрахамс
  • Фрэнк Мори Гесс
  • Рональд Гарсия

Библиотека Ref - это небольшая библиотека, которая полезна для передачи ссылок на шаблоны функций (алгоритмы), которые обычно берут копии своих аргументов. Он определяет шаблон класса<boost::reference_wrapper<T>>, две функции<boost::ref>и<boost::cref>, которые возвращают экземпляры<boost::reference_wrapper<T>>, функцию<boost::unwrap_ref>, которая разворачивает<boost::reference_wrapper<T>>или возвращает ссылку на любой другой тип объекта, и два класса признаков<boost::is_reference_wrapper<T>>и<boost::unwrap_reference<T>>.

Цель<boost::reference_wrapper<T>>состоит в том, чтобы содержать ссылку на объект типа<T>. Он в основном используется для «питания» ссылок на шаблоны функций (алгоритмы), которые принимают их параметр по значению.

Для поддержки этого использования<boost::reference_wrapper<T>>обеспечивает неявное преобразование в<T&>. Обычно это позволяет шаблонам функций работать над ссылками без изменений.

<boost::reference_wrapper<T>>является как CopyConstructible, так и Assignable (обычные ссылки не являются Assignable).

<expressionboost::ref(x)>возвращает<boost::reference_wrapper<X>(x)>, где<X>является типом<x>.<boost::cref(x)>Возвращает<boost::reference_wrapper<Xconst>(x)>.

Выражение<boost::unwrap_ref(x)>возвращает<boost::unwrap_reference<X>::type&>, где<X>является типом<x>.

<boost::is_reference_wrapper<T>::value>—<true>, если<T>—<reference_wrapper>, а<false>— иначе.

<boost::unwrap_reference<T>::type>—<T::type>, если<T>—<reference_wrapper>,<T>иначе.

Reference

namespace boost {
  template<typename T> class reference_wrapper;
  template<typename T> struct is_reference_wrapper;
  template<typename T> struct unwrap_reference;
  template<typename T> reference_wrapper< T > const ref(T &);
  template<typename T> reference_wrapper< T const  > const cref(T const &);
  template<typename T> void ref(T const &&);
  template<typename T> void cref(T const &&);
  template<typename T> unwrap_reference< T >::type & unwrap_ref(T &);
}

<ref>и<cref>первоначально были частью библиотеки Тюпле Яакко Järvi. Их «распространил на<boost::>статус» Петр Димов, потому что они вообще полезны. Дуглас Грегор и Дэйв Абрахамс внесли свой вклад<is_reference_wrapper>и<unwrap_reference>. Фрэнк Мори Хесс и Рональд Гарсия внесли свой вклад<boost::unwrap_ref>.


PrevUpHomeNext

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




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



:: Главная :: Chapter 1. Boost.Core ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:38:05/0.0066509246826172/0