Besides custom points, custom boxes are possible as shown in this example.
#include <iostream>
#include <boost/geometry/io/dsv/write.hpp>
struct my_point
{
double x, y;
};
struct my_int_point
{
int x, y;
};
struct my_box
{
my_point ll, ur;
};
struct my_box_ltrb
{
int left, top, right, bottom;
};
struct my_box_4
{
double coors[4];
};
template <typename P>
struct my_box_t
{
P ll, ur;
};
int main()
{
my_point p = boost::geometry::make<my_point>(3.5, 3.5);
my_box b = boost::geometry::make<my_box>(0, 0, 2, 2);
my_box_ltrb b1 = boost::geometry::make<my_box_ltrb>(0, 0, 3, 3);
my_box_4 b4 = boost::geometry::make<my_box_4>(0, 0, 4, 4);
my_box_t<my_point> bt = boost::geometry::make<my_box_t<my_point> >(0, 0, 5, 5);
std::cout << boost::geometry::dsv(p) << " IN " << boost::geometry::dsv(b)
std::cout << boost::geometry::dsv(p) << " IN " << boost::geometry::dsv(b1)
std::cout << boost::geometry::dsv(p) << " IN " << boost::geometry::dsv(b4)
std::cout << boost::geometry::dsv(p) << " IN " << boost::geometry::dsv(bt)
return 0;
}