Задает политику преобразования указателя на реализацию одного интерфейса в указатель на реализацию другого интерфейса с разделением владения реализацией.
id_t | Тип идентификатора интерфейса, который должен удовлетворять требованиям EqualityComparable. |
id_v | Значение идентификатора интерфейса, к которому осуществляется преобразование с помощью conversion_sequence_t. |
conversion_sequence_t | Политика преобразования реализации интерфейсов и класса interface_implementation_base, с conversion_policy_map, в указатель на целевой интерфейс, соответствующий значению id_v. Тип conversion_sequence_t должен предоставлять следующие статические элементы.
- Постоянная sequence_length типа size_t, которая задает длину цепочки преобразований типов из реализации исходного типа в конечный тип.
- Метатип
sequence_element<std::size_t> , который соответствует конечному (для I = 0) или промежуточному (для I от 1 до sequence_length - 1) типу в цепочке преобразований типов.
- Метод
sequence_element<0> convert(implementation_type* arg) , где implementation_type тип реализации интерфейса, эквивалентный параметру impl_t шаблона interface_implementation_base. Метод непосредственно осуществляет преобразование по цепочке в конечный тип, не завладевая параметром arg.
В качестве аргументов для conversion_sequence_t можно использовать существующие политики преобразования: explicit_conversion_sequence, implicit_conversion_sequence, static_conversion_sequence, dynamic_conversion_sequence, const_conversion_sequence, reinterpret_conversion_sequence и compound_conversion_sequence. |
Открытые типы
Тип | Описание |
conversion_sequence | Метафункция преобразования. Определена как conversion_sequence_t. |
Открытые постоянные
Тип | Значение | Описание |
value | id_v | Идентификатор интерфейса, к указателю на который осуществляется преобразование с помощью conversion_sequence_t. |