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

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
PrevUpHomeNext

interior_type

Metafunction defining type as the interior_type (container type of inner rings) of the \3.

Description

Interior rings should be organized as a container (std::vector, std::deque, boost::array) with Boost.Range support. This metafunction defines the type of the container.

Synopsis

template<typename Geometry>
struct interior_type
{
  // ...
};

Template parameter(s)

Parameter

Description

typename Geometry

A type fullfilling the Polygon or MultiPolygon concept.

Header

Either

#include <boost/geometry.hpp>

Or

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

Complexity

Compile time

Example

Shows how to use the interior_type metafunction

#include <iostream>
#include <typeinfo>

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/ring.hpp>
#include <boost/geometry/geometries/adapted/boost_array.hpp>

BOOST_GEOMETRY_REGISTER_BOOST_ARRAY_CS(cs::cartesian)

int main()
{
    // Define a polygon storing points in a deque and storing interior rings
    // in a list (note that std::list is not supported by most algorithms
    // because not supporting a random access iterator)
    typedef boost::geometry::model::polygon
        <
            boost::array<short, 3>,
            true, true,
            std::deque, std::list
        > polygon;

    std::cout << typeid(boost::geometry::interior_type<polygon>::type).name() << std::endl;

    return 0;
}

Output (using MSVC) is a long story (part manually replaced with ellipsis):

class std::list<class boost::geometry::model::ring<class boost::array<short,3>,1,1,class std::deque,class std::allocator>,class std::allocator<...> > >

PrevUpHomeNext