conversion_map_entity

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску


Задает политику преобразования указателя на реализацию одного интерфейса в указатель на реализацию другого интерфейса с разделением владения реализацией.

template <class id_t, id_t id_v, class conversion_sequence_t> 
struct conversion_map_entity;
id_tТип идентификатора интерфейса, который должен удовлетворять требованиям EqualityComparable.
id_vЗначение идентификатора интерфейса, к которому осуществляется преобразование с помощью conversion_sequence_t.
conversion_sequence_tПолитика преобразования реализации интерфейсов и класса interface_implementation_base, с conversion_policy_map, в указатель на целевой интерфейс, соответствующий значению id_v. Тип conversion_sequence_t должен предоставлять следующие статические элементы.
  1. Постоянная sequence_length типа size_t, которая задает длину цепочки преобразований типов из реализации исходного типа в конечный тип.
  2. Метатип sequence_element<std::size_t>, который соответствует конечному (для I = 0) или промежуточному (для I от 1 до sequence_length - 1) типу в цепочке преобразований типов.
  3. Метод 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.
Открытые постоянные
ТипЗначениеОписание
valueid_vИдентификатор интерфейса, к указателю на который осуществляется преобразование с помощью conversion_sequence_t.