![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Function Template closeBoost , ,Function Template
|
T | - | Модель одной из концепцийУстройства. |
template<typenameT> voidclose(T& t);>
Это<close
>вызова<close(t, std::ios_base::in)
>, за которыми следует<close(t, std::ios_base::out)
>. Он гарантирует, что<t
>закрыт должным образом, независимо от режимаили<t
>.
close
>и #8212; Уведомление о закрытии для устройствT | - | Модель одного из понятийУстройство. |
template<typenameT> voidclose(T& t, std::ios_base::openmode which);>
Если<t
>являетсяфильтрующим потоком или буфером потока,<close
>вызывает<pop
>, если<t
>являетсяполным. Семантика зависит от своейкатегорииследующим образом:
<category<T>::type > | семантика |
---|---|
конвертируемая в<input >, но не в<output > |
<t.pop() >, если<t >завершен и который == ios_base::in |
otherwise | <t.pop() >, если<t >завершено и<which == ios_base::out > |
Семантика<close
>для устройства<T
>, отличного от фильтрующего потока или буфера потока, зависит от егокатегорииследующим образом:
category<T>::type | semantics |
---|---|
not convertible to closable_tag |
<flush > |
convertible to closable_tag and to bidirectional |
Звонки<t.close(which) > |
convertible to closable_tag and to input but not to output |
<t.close() >Если<which == ios_base::in > |
convertible to closable_tag and to output but not to bidirectional |
<t.close() >Если<which == ios_base::out > |
Короче говоря:
T
>не являетсяClosable,<close
>вызывает<flush
>.T
>являетсяClosableи управляет двумя отдельными последовательностями,<close
>делегирует функции члена<close
>, принимая один<openmode
>параметр.close
>делегирует функции члена<close
>, не принимая никаких параметров, но только если ее<openmode
>параметр соответствует режиму<T
>. Последнее условие не позволяет устройству, управляющему одной последовательностью, закрываться дважды подряд.
ПРИМЕЧАНИЕ:Начиная с Boost 1.35, вызов этой функции<openmode
>, кроме<std::ios_base::in
>или<std::ios_base::out
>,обесценивается. Чтобы закрыть обе последовательности одновременно, используйте<
close(t)>вместо<
close(t, std::ios_base::in | std::ios_base::out)>.
close
— Closure Notification for FiltersT | - | Модель одной из концепций фильтра |
Device | - | БлокировкаУстройство, чейрежимуточняет режим<T >. |
template<typename T, typename Device> void close(T& t, Device& next, std::ios_base::openmode which);
Семантика<close
>для типа фильтра<T
>зависит от егокатегорииследующим образом:
category<T>::type | semantics |
---|---|
not convertible to closable_tag |
<flush > |
convertible to closable_tag and to bidirectional |
Звонки<t.close(next, which) > |
convertible to closable_tag and to input but not to output |
<t.close(next) >Если<which == ios_base::in > |
convertible to closable_tag and to output but not to bidirectional |
<t.close(next) >Если<which == ios_base::out > |
Короче говоря:
T
>неКлозибель,<close
>вызывает<flush
>.T
>являетсяКлозибельи управляет двумя отдельными последовательностями,<close
>делегирует функции члена<close
>, принимая<openmode
>и параметры буфера потока.close
>делегатов на членскую функцию<close
>принимают один параметр буфера потока, но только если его<openmode
>параметр соответствует режиму<T
>.Последнее условие не позволяет фильтру, управляющему одной последовательностью, закрываться дважды подряд.
Примечание:Начиная с Boost 1.35, вызов этой функции с<openmode
>, отличным от<std::ios_base::in
>или<std::ios_base::out
>, являетсяобесцененным.
<close
>Это поведение может быть отключено в случае<pop
>путем вызова функции члена<set_auto_close
>с аргументом<false
>. См., например,<filtering_stream::set_auto_close
>.
© Copyright 2008 CodeRage, LLC
© Copyright 2004-2007 Jonathan Turkanis
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Статья Function Template close раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: ::
реклама |