Boolean union with overlapping faces Is there a way to make a Boolean union of two objects which have at least one touching/overlapping face (same orientation)?

Let's say I have a cube and a cylinder (same size), shift the cylinder on x and y and in edit mode move up the top vertices, so the bottom ones stay overlapped:



The I'll select the cube, add a Boolean modifier with union and select the cylinder as other object.

When I then apply the Boolean modifier, the cylinder disappears either or I will have non-manifolds, because of inner geometry.

The only known solution to me is to move all the vertices on the ground layer (z 0) a tad up or down so the don't exactly overlap.

But doing this to every object I want to Boolean union is very tedious, especially when they are rotated and I can't move the vertices exactly in the right direction.

So is there an easier way?
The boolean modifier has two modes, 'Carve' and 'BMesh' (under the box for the second object)
A quick test shows for me that if I use 'BMesh', internal edges and faces are preserved, while with 'Carve', they are removed.