![]() |
![]() ![]() ![]() ![]() |
![]() |
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 Filters| T | - | Модель одной из концепций фильтра |
| 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.
:: Главная :: ::
реклама |