Hi all, I am using boost/polygon to do unions of multiple polygons, and I lose holes that were in the input after the assign() operation. Here is code that demonstrates the issue: // Create outer contour Point outer[] = {gtl::construct<Point>(0, 0), gtl::construct<Point>(0, 10), gtl::construct<Point>(10, 10), gtl::construct<Point>(10, 0)}; // Create inner contour Point inner[] = {gtl::construct<Point>(2, 2), gtl::construct<Point>(8, 2), gtl::construct<Point>(8, 8), gtl::construct<Point>(2, 8)}; // Define inner contour as a polygon polygon_with_holes_data<long> input_poly_inner; gtl::set_points(input_poly_inner, inner, inner+4); // Put inner polygon in a list vector<polygon_with_holes_data<long> > inners; inners.push_back(input_poly_inner); // Create input polygon as outer contour + inner polygon list polygon_with_holes_data<long> input_poly; gtl::set_points(input_poly, outer, outer+4); gtl::set_holes(input_poly, inners.begin(), inners.end()); // Create input polygon set, insert input polygon polygon_set_data<long> input_poly_set; input_poly_set.insert(input_poly); // Create output polygon set, assign input polygon set vector<polygon_with_holes_data<long> > output_poly_set; assign(output_poly_set, input_poly_set); // Print result std::cout << output_poly_set.size() << " polys" << std::endl; std::cout << output_poly_set[0].size_holes() << " holes" << std::endl; This prints: 1 polys 0 holes Any idea what I am doing wrong ? Kind regards, Julien Nicoulaud