среда, 27 ноября 2024 г.

Boost, Reflection, Lib, C++14

Boost, Reflection, Lib, C++14

https://www.boost.org/doc/libs/1_86_0/libs/describe/doc/html/describe.html#example_hash_value

Overview

This library enables authors of user-defined types (enums, structs and classes) to describe their enumerators, base classes, data members and member functions. This information can later be queried by other code portions, possibly written by a different author, using the supplied primitives describe_enumeratorsdescribe_bases, and describe_members.

To learn how to describe enumeration types, see Describing Enumeration Types.

To learn how to describe class types, including structs, see Describing Class Types.

For examples how this functionality is useful, see Usage Examples.

The purpose of the library is to establish a standard way of providing these reflection abilities. Many existing libraries provide their own way of describing enums or classes, but without a standard, code written by different people cannot interoperate.

Eventually, one might hope for the primitives to end up in the C++ standard, with the compiler automatically supplying the metadata necessary to describe the types, making manual macro annotation unnecessary.

Эта библиотека позволяет авторам пользовательских типов (перечисления, структуры и классы) описывать свои перечислители, базовые классы, элементы данных и функции-члены. Эту информацию позже могут запрашивать другие части кода, возможно, написанные другим автором, используя предоставленные примитивы describe_enumerators, describe_bases и describe_members.

Чтобы узнать, как описывать типы перечислений, см. Описание типов перечислений.

Чтобы узнать, как описывать типы классов, включая структуры, см. Описание типов классов.

Примеры того, как эта функциональность полезна, см. Примеры использования.

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

В конечном итоге можно надеяться, что примитивы окажутся в стандарте C++, а компилятор автоматически предоставит метаданные, необходимые для описания типов, что сделает ручное аннотирование макросов ненужным.

Комментариев нет:

Отправить комментарий

Boost, Asio, Github

Boost, Asio, Github https://github.com/ru-cpp-tutorials/asio-tutorial/ https://github.com/freeacetone/BoostAsioBookRussian