ArbitrarilyAccessedDataStorageInputOwn::operator=: различия между версиями
Перейти к навигации
Перейти к поиску
Параметры шаблона
Параметры
(не показана 1 промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
{{function_begin|ArbitrarilyAccessedDataStorageInputOwn | {{function_begin|ArbitrarilyAccessedDataStorageInputOwn& operator{{=}}(ArbitrarilyAccessedDataStorageInputOwn&& right); //1 | ||
template <class RightAdapterType> | |||
ArbitrarilyAccessedDataStorageInputOwn& operator{{=}}(RightAdapterType&& right); //2 | |||
template <class | |{{ArbitrarilyAccessedDataStorageInputOwn::operator{{=}} brief}} | ||
# Оператор присваивания с перемещением, который переносит владение реализацией накопителя данных адаптеру {{cpp_this}}. Присваивание адаптеру разрешено, только если он не был до этого проинициализирован действительным адресом реализации накопителя или был сброшен с помощью [[ArbitrarilyAccessedDataStorageInputOwn::release_ownership]] или [[ArbitrarilyAccessedDataStorageInputOwn::reset_ownership]] без параметров. В противном случае генерируются исключения - [https://www.chusov.org/doxygen/struct_chusov_1_1_exceptions_1_1_unsupported_call_exception.html Chusov::Exceptions::UnsupportedCallException], если {{param|right}} не содержит реализации [[IArbitrarilyAccessedDataStorageInput]], и [https://www.chusov.org/doxygen/struct_chusov_1_1_exceptions_1_1_invalid_parameter_exception.html Chusov::Exceptions::InvalidParameterException] - в противном случае. | |||
# Аналогично, но с приведением типа указателя на реализацию с <source lang="cpp" inline>typename std::remove_reference_t<RightAdapterType>::interface_type*</source> к типу <source lang="cpp" inline>const IArbitrarilyAccessedDataStorageInput*</source>. Данная перегрузка участвует в процедуре разрешения перегрузок, только если <source lang="cpp" inline>RightAdapterType&&</source> является rvalue-ссылкой, тип <source lang="cpp" inline>std::decay_t<RightAdapterType></source> является [[владеющий адаптер|адаптером с владением]] с подтипом <tt>interface_type</tt>, указатель на который неявно приводим к <source lang="cpp" inline>const IArbitrarilyAccessedDataStorageInput*</source>.}} | |||
|{{ArbitrarilyAccessedDataStorageInputOwn:: | |||
# | |||
{{function template paramlist begin}} | {{function template paramlist begin}} | ||
{{function template paramlist add| | {{function template paramlist add|RightAdapterType|Тип адаптера с владением реализацией интерфейса [[IArbitrarilyAccessedDataStorageInput]] (или неявно приводимого к типу <source lang="cpp" inline>const IArbitrarilyAccessedDataStorageInput*</source> интерфейса), которая передается экземпляру {{cpp_this}} адаптера перегрузкой 2. Тип <source lang="cpp" inline>std::decay_t<RightAdapterType></source> должен задавать адаптер с владением через указатель, приводимый к типу <source lang="cpp" inline>const IArbitrarilyAccessedDataStorageInput*</source>.}} | ||
{{function template paramlist end}} | {{function template paramlist end}} | ||
{{function_paramlist begin}} | {{function_paramlist begin}} | ||
{{function_paramlist add|right|Адаптер, передающий владение своим интерфейсным указателем, если он есть, создаваемому экземпляру [[ArbitrarilyAccessedDataStorageInputOwn]], как если бы был выполнен вызов <source lang="cpp" inline>right.release_ownership()</source>.}} | {{function_paramlist add|right|Адаптер, передающий владение своим интерфейсным указателем, если он есть, создаваемому экземпляру [[ArbitrarilyAccessedDataStorageInputOwn]], как если бы был выполнен вызов <source lang="cpp" inline>right.release_ownership()</source>.}} | ||
{{function_paramlist end}} | {{function_paramlist end}} | ||
{{function_end}} | {{function_end}} |
Текущая версия на 17:07, 15 августа 2019
ArbitrarilyAccessedDataStorageInputOwn& operator=(ArbitrarilyAccessedDataStorageInputOwn&& right); //1
template <class RightAdapterType>
ArbitrarilyAccessedDataStorageInputOwn& operator=(RightAdapterType&& right); //2
Операторы присваивания адаптера с владением.
- Оператор присваивания с перемещением, который переносит владение реализацией накопителя данных адаптеру this. Присваивание адаптеру разрешено, только если он не был до этого проинициализирован действительным адресом реализации накопителя или был сброшен с помощью ArbitrarilyAccessedDataStorageInputOwn::release_ownership или ArbitrarilyAccessedDataStorageInputOwn::reset_ownership без параметров. В противном случае генерируются исключения - Chusov::Exceptions::UnsupportedCallException, если right не содержит реализации IArbitrarilyAccessedDataStorageInput, и Chusov::Exceptions::InvalidParameterException - в противном случае.
- Аналогично, но с приведением типа указателя на реализацию с
typename std::remove_reference_t<RightAdapterType>::interface_type*
к типуconst IArbitrarilyAccessedDataStorageInput*
. Данная перегрузка участвует в процедуре разрешения перегрузок, только еслиRightAdapterType&&
является rvalue-ссылкой, типstd::decay_t<RightAdapterType>
является адаптером с владением с подтипом interface_type, указатель на который неявно приводим кconst IArbitrarilyAccessedDataStorageInput*
.
RightAdapterType | Тип адаптера с владением реализацией интерфейса IArbitrarilyAccessedDataStorageInput (или неявно приводимого к типу const IArbitrarilyAccessedDataStorageInput* интерфейса), которая передается экземпляру this адаптера перегрузкой 2. Тип std::decay_t<RightAdapterType> должен задавать адаптер с владением через указатель, приводимый к типу const IArbitrarilyAccessedDataStorageInput* . |
right | Адаптер, передающий владение своим интерфейсным указателем, если он есть, создаваемому экземпляру ArbitrarilyAccessedDataStorageInputOwn, как если бы был выполнен вызов right.release_ownership() . |