interface_id

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

Метафункция, которая ставит в соответствие программному интерфейсу, поддерживающему преобразование типов методами IsInterfaceAvailable и RepresentAs, тип и значение идентификатора интерфейса.

template <class I> struct interface_id {};
IТип программного интерфейса, над которым вызывается метафункция interface_id.

Общая реализация шаблона не содержит членов. Однако этот шаблон специализируется для типов интерфейсов, поддерживающих преобразование типов.

Такая специализация поддерживает следующие элементы.

Открытые типы
ТипОписание
typeОпределен как тип идентификатора интерфейса I.
Открытые постоянные
ТипЗначениеОписание
valueне заданоЗначение идентификатора интерфейса I.
Пример
template <> struct interface_id<IDataStorage> :std::integral_constant<DataStorageTypeId, DataStorageType> {};
template <> struct interface_id<IConsequentDataStorageInput> :std::integral_constant<DataStorageTypeId, ConsequentDataStorageInputType> {};
template <> struct interface_id<IArbitrarilyAccessedDataStorageInput> :std::integral_constant<DataStorageTypeId, ArbitrarilyAccessedDataStorageInputType> {};
//...