|
Geometry : |
Subject: Re: [geometry] Is "dimensions" signed or unsigned?
From: Patrick J. LoPresti (lopresti_at_[hidden])
Date: 2014-09-22 17:20:48
Adam Wulkiewicz <adam.wulkiewicz_at_[hidden]> writes:
> I fixed signed/unsigned comparison in index/.../is_valid in develop
> branch.
Thanks.
> The problem with dimension<> metafunction is that the type of the
> value depends on the traits defined for a Geometry. For all models in
> Boost.Geometry int type is used but the user may define it as unsigned
> or size_t, etc. So I'm guessing that we can't be fully consistent
> here.
Well, it could be consistent internally... But I see the point about
user-defined types.
In fact, that is my current problem :-). From
core/coordinate_dimension.hpp:
template <typename Geometry, int Dimensions>
inline void assert_dimension()
{
BOOST_STATIC_ASSERT((
boost::mpl::equal_to
<
geometry::dimension<Geometry>,
boost::mpl::int_<Dimensions>
>::type::value
));
}
For me, geometry::dimension<Geometry> is the dimension of my own type,
which I made unsigned... So the "equal_to" comparison ultimately
compares unsigned vs. signed, triggering the warning.
Similar problems occur with the functions immediately below
(assert_dimension_equal() etc.)
> Of course if you think that something could be improved, not only this
> issue, patches are more than welcome.
> In case you didn't know, here is a tutorial:
> https://github.com/boostorg/geometry/wiki/Contribution-Tutorial
Great tutorial!
I have taken a crack at fixing the signed/unsigned warnings from
coordinate_dimension.hpp and sent the pull request.
Thanks again.
- Pat
Geometry list run by mateusz at loskot.net