
AMDG Simonson, Lucanus J wrote:
Steven Watanabe wrote:
template <typename geometry_type_1, typename geometry_type_2> typename boost::enable_if< boost::mpl::and_<is_any_polygon_set_type<geometry_type_1>, is_any_polygon_set_type<geometry_type_2>, is_either_polygon_set_type<geometry_type_1, geometry_type_2> >, polygon_set_view<geometry_type_1, geometry_type_2, 3>
::type operator-(const geometry_type_1& lvalue, const geometry_type_2& rvalue) { return polygon_set_view<geometry_type_1, geometry_type_2, 3> (lvalue, rvalue); }
This won't work. In order to instantiate enable_if the compiler must instantiate both of its arguments. That means the compiler will try to instantiate polygon_set_view<> for every time the generic operator - in the stl is used for iterator arithmetic. Any error encountered trying to instantiate polygon_set_view will cause a syntax error and failed compilation even though the and_ evaluates to false.
Not true. Simply naming polygon_set_view<geometry_type_1, geometry_type_2, 3> doesn't force it to be instantiated. If you're getting an error from this, there must be some other reason. In Christ, Steven Watanabe