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

BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED

Boost , Chapter 1. Fusion 2.2 , Adapted

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

PrevUpHomeNext
Description

BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED и BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS являются макросами, которые могут быть использованы для генерации всех необходимых шаблонов для создания произвольной структуры модели Random Access Sequence и Associative Sequence. Данная структура адаптирована с использованием данного имени.

Synopsis
BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
    struct_name, adapted_name,
    ([member_type0,] member_name0, key_type0)
    ([member_type1,] member_name1, key_type1)
    ...
    )
BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS(
    struct_name,
    (namespace0)(namespace1)...,
    adapted_name,
    ([member_type0,] member_name0, key_type0)
    ([member_type1,] member_name1, key_type1)
    ...
    )
Semantics

Вышеуказанные макросы генерируют необходимый код для адаптации struct_name в качестве модели Random Access Sequence и Associative Sequence при использовании adapted_name в качестве имени адаптированной структуры. Последовательность (namespace0)(namespace1)... объявляет пространство имен adapted_name. Он дает полностью квалифицированное имя для adapted_name namespace0::namespace1::... adapted_name. Если дается пустая последовательность пространства имен (это макрос, который ни к чему не расширяется), адаптированный вид помещается в глобальное пространство имен. Если не дана последовательность пространства имен (т.е. BOOST_FUSION_ADAPT_STRUCT_ASSOC_NAMED), адаптированный вид помещается в пространство имен boost::adapted. Последовательность (member_typeN, member_nameN, key_typeN) втрое заявляет тип, имя и тип ключа каждого из членов структуры, которые являются частью последовательности.

Когда член_тип N опущен или установлен на авто, тип выведен с помощью Boost. Типоф.

Макросы должны использоваться в глобальном масштабе, и struct_name должно быть полностью квалифицированным именем пространства имен для преобразования структуры.

Header
#include <boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp>
#include <boost/fusion/include/adapt_assoc_struct_named.hpp>
Example
namespace demo
{
    struct employee
    {
        std::string name;
        int age;
    };
}
namespace keys
{
    struct name;
    struct age;
}
// boost::fusion::adapted::adapted_employee is now a Fusion sequence
// referring to demo::employee
BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
    demo::employee, adapted_employee,
    (name, keys::name)
    (age, keys::age))
// Without BOOST_PP_VARIADICS support :
BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
    demo::employee, adapted_employee,
    (auto, name, keys::name)
    (auto, age, keys::age))

PrevUpHomeNext

Статья BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED раздела Chapter 1. Fusion 2.2 Adapted может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:01:10/0.0063929557800293/0