<div>I'm not sure if I'm blind or if something like this doesn't exist. How can I check whether two types are compatible?</div><div><br></div><div>Here's the scenario:</div><div><br></div><div>I'm implementing communication primitives for a parallel bipartite graph and want to be able to move composite types such as user-defined structs associated with each vertex in the graph. I call this the "unit" type.</div>
<div><br></div><div>Inside my communication library, I'm constructing composite datatypes for each unit that needs to be sent. I'd like to create these lazily (the first time the user tries to use that unit) and cache them for future use. I MPI_Type_dup() the unit so that lifetime of the custom type can be managed independently (shorter or longer) from lifetime of the communication graph object.</div>
<div><br></div><div>Now I need to determine whether a user-provided "unit" is already cached. I don't mind a linear search, but I don't have an "equality" test. I can call MPI_Type_get_envelope() and MPI_Type_get_contents(), but I would have to explore this backward for types that have been duped and it just doesn't seem like a robust equality test. Is there such a thing?</div>
<div><br></div><div>Do you have a different recommendation?</div>