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

tag_cast

Boost , Chapter 1. Geometry , Core Metafunctions

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

Теги могут наследовать друг друга. Multi_point наследует, например, как multi_tag, так и pointlike_tag. Часто поведение можно разделить между различными типами геометрии. Тег, найденный метафункциональным тегом, может быть отлит в более базовый тег, а затем отправлен этим тегом.

Synopsis

template<typename Tag, typename BaseTag, typename BaseTag2, typename BaseTag3,
         typename BaseTag4, typename BaseTag5, typename BaseTag6, typename BaseTag7>
struct tag_cast
{
  // ...
};

Template parameter(s)

Параметр

по умолчанию

Описание

Имя пользователя

The tag to be casted to one of the base tags

Типовое название BaseTag

Первый базовый тег

Имя типа BaseTag2

пустота

Optional second base tag

Имя типа BaseTag3

пустота

Факультативный третий базовый тег

Имя типа BaseTag4

пустота

Факультативный четвертый базовый тег

Имя типа BaseTag5

пустота

Факультативная пятая базовая метка

Имя типа BaseTag6

пустота

Факультативный шестой базовый тег

Имя типа BaseTag7

пустота

Факультативный седьмой базовый тег

Header

Либо

#include <boost/geometry.hpp>

Либо

#include <boost/geometry/core/tag_cast.hpp>

[Note]Note

Указанный список тегов обрабатывается в указанном порядке: как только тег наследует указанный тег, он определяется как метафункция typedefтипа.

[Note]Note

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

Complexity

Время компиляции

Example

Проверьте, можно ли отлить полигон_тег в areal_tag

#include <iostream>
#include <typeinfo>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
namespace geo = boost::geometry;
int main()
{
    typedef geo::model::d2::point_xy<double> point_type;
    typedef geo::model::polygon<point_type> polygon_type;
    typedef geo::tag<polygon_type>::type tag;
    typedef geo::tag_cast<tag, geo::linear_tag, geo::areal_tag>::type base_tag;
    std::cout << "tag: " << typeid(tag).name() << std::endl
        << "base tag: " << typeid(base_tag).name() << std::endl;
    return 0;
}

Выход (в MSVC):

tag: struct boost::geometry::polygon_tag
base tag: struct boost::geometry::areal_tag

PrevUpHomeNext

Статья tag_cast раздела Chapter 1. Geometry Core Metafunctions может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Core Metafunctions ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 22:05:37/0.028275012969971/1