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

Movable Handlers

Boost , Boost.Asio , C++ 2011 Support

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

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

Когда включена поддержка движения, асинхронные, которые документируются следующим образом:

template <typename Handler>
void async_XYZ(..., Handler handler);

фактически они объявлены как:

template <typename Handler>
void async_XYZ(..., Handler&& handler);

Аргумент обработчика идеально перенаправляется, и конструкция перемещения происходит в теле async_XYZ(). Это гарантирует, что все другие аргументы функции будут оценены до переезда. Это имеет решающее значение, когда другие аргументы async_XYZ() являются членами обработчика. Например:

struct my_operation
{
  shared_ptr<tcp::socket> socket;
  shared_ptr<vector<char>> buffer;
  ...
  void operator(error_code ec, size_t length)
  {
    ...
    socket->async_read_some(boost::asio::buffer(*buffer), std::move(*this));
    ...
  }
};

Поддержка перемещения автоматически включается для g++ 4.5 и позже, когда используются параметры компилятора -std=c++0x или -std=gnu++0x. Он может быть отключен путем определения BOOST_ASIO_DISABLE_MOVE или явно включен для других компиляторов путем определения BOOST_ASIO_HAS_MOVE. Обратите внимание, что эти макросы также влияют на доступность подвижных объектов ввода/вывода .


PrevUpHomeNext

Статья Movable Handlers раздела Boost.Asio C++ 2011 Support может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: C++ 2011 Support ::


реклама


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

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