Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Chapter 1. The Type Traits Introspection Library

Boost , Chapter 1. The Type Traits Introspection Library ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Next

Chapter 1. The Type Traits Introspection Library

Edward Diener

Распространяется под лицензией Boost Software License, версия 1.0. (См. сопроводительный файл LICENSE_1_0.txt или копию по адресу http://www.boost.org/LICENSE_1_0.txt)

Таблица содержимого

Introduction
Header Files
Why the TTI Library ?
Terminology
General Functionality
Macro metafunction name generation considerations
Macro Metafunctions
Introspecting an inner type
Introspecting an inner class template
Using the BOOST_TTI_HAS_TEMPLATE macro
Using the has_template_(xxx) metafunction
Introspecting member data
Introspecting member function
Introspecting static member data
Introspecting static member function
Introspecting inner data
Introspecting an inner function
Nested Types
Nested Types and Function Signatures
Enclosing Type
An example using the Macro Metafunctions
Introspecting Function Templates
Reference
Header <boost/tti/gen/has_data_gen.hpp>
Header <boost/tti/gen/has_function_gen.hpp>
Header <boost/tti/gen/has_member_data_gen.hpp>
Header <boost/tti/gen/has_member_function_gen.hpp>
Header <boost/tti/gen/has_static_member_data_gen.hpp>
Header <boost/tti/gen/has_static_member_function_gen.hpp>
Header <boost/tti/gen/has_template_gen.hpp>
Header <boost/tti/gen/has_type_gen.hpp>
Header <boost/tti/gen/member_type_gen.hpp>
Header <boost/tti/gen/namespace_gen.hpp>
Header <boost/tti/has_data.hpp>
Header <boost/tti/has_function.hpp>
Header <boost/tti/has_member_data.hpp>
Header <boost/tti/has_member_function.hpp>
Header <boost/tti/has_static_member_data.hpp>
Header <boost/tti/has_static_member_function.hpp>
Header <boost/tti/has_template.hpp>
Header <boost/tti/has_type.hpp>
Header <boost/tti/member_type.hpp>
Testing TTI
History
ToDo
Acknowledgments
Index

Добро пожаловать в библиотеку интроспекции признаков роста, сокращенно TTI.

TTI - это библиотека, которая предоставляет возможность интроспектировать по имени элементы типа во время компиляции.

TTI работает через макросы, генерирующие метафункции. Метафункции — это шаблоны классов определенного синтаксиса, имеющие вложенный элемент «типа». Таким образом, где бы ни появлялись шаблоны классов C++, можно использовать макросы TTI. Метафункции, генерируемые TTI, не отличаются от любой другой метафункции, определенной библиотекой Boost MPL.

Метафункции, генерируемые TTI, используются для интроспекции элементов типа во время компиляции, всегда переходя по крайней мере к каждой метафункции.

Название библиотеки было выбрано потому, что библиотека предлагает функциональность компиляции времени по типу, аналогичную библиотеке черт типа Boost, и потому, что функциональность, которую предлагает библиотека, - это способность интроспектировать тип о существовании определенного элемента в этом типе.

Я использую слово «интроспективный» в очень широком смысле. Обычно интроспекция компьютерного языка означает первоначальное требование вернуть информацию по имени, которое затем может быть использовано для интроспекции более конкретной информации. В библиотеке TTI всегда нужно знать и предоставлять имя, а также использовать функциональность, предусмотренную для правильного типа внутреннего элемента, чтобы узнать, существует ли эта конкретная именованная сущность.

Вы можете предпочесть термин «запрос» вместо «интроспекция» для обозначения того, что делает эта библиотека, но я использую терминологию, основанную на слове «интроспекция» во всей этой документации.

Функциональность библиотеки можно суммировать следующим образом:

  • Предоставьте средства для интроспекции типа во время компиляции с использованием набора макросов. Каждый макрос берет название элемента типа и генерирует метафункцию, которая впоследствии может быть вызвана, чтобы определить, существует ли элемент внутри типа. Эти сгенерированные метафункции в документации будут называться «макрометафункциями».
  • Предоставьте средства для создания типдефа для типа, который может не существовать. Этот тип можно использовать в качестве типа в метафункциях библиотеки без ошибок компиляции.

Библиотека зависит от Boost PP, Boost MPL, Boost Type Traits и Boost Function Types.

Библиотека также зависит от вариадной макроподдержки библиотеки Boost PP, если используются вариадные макросы в библиотеке.

Библиотека — это только библиотека.

Поскольку все зависимости библиотеки являются только библиотеками заголовков, нет необходимости создавать библиотеку для использования библиотеки TTI.

Существует один файл заголовка, boost/tti/tti.hpp, который включает в себя все файлы заголовка в библиотеке.

Существуют также отдельные файлы заголовков для каждого из элементов, которые будут интроспектироваться библиотекой. Это позволяет интроспектировать более мелкозернистое включение вложенных элементов. Эти файлы заголовков:

Table 1.1. TTI Header Files

Интроспективный элемент

Специфический файл заголовка

Тип

has_type.hpp

Классный шаблон

has_template.hpp

Данные о членах

has_member_data.hpp

Функция члена

has_member_function.hpp

Статические данные

has_static_member_data.hpp

Функция статического члена

has_static_member_function.hpp

Данные о членах

has_data.hpp

Функция члена

has_function.hpp

Создание типов

member_type.hpp


Последние изменения: 21 сентября 2016 в 14:49:36 GMT


Next

Статья Chapter 1. The Type Traits Introspection Library раздела Chapter 1. The Type Traits Introspection Library может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:02:46/0.0071918964385986/0