Originally Posted by phantomotap
You'd still get reference semantics which is poorly considered if the thing you are using looks like it should have value semantics.
*shrug*
Well, okay, I'm assuming you are talking about C instead of C++; with C++ you could just wrap for value semantics if you wanted.
With that in mind, I don't think an opaque pointer is a place for `typedef' pointer. If you don't have the `typedef', the reference semantics are obvious from the use. (The type you use doesn't look like it might have value semantics.) The type, because it is undefined, firewalls itself from chasing the pointer, accessing members, or attempting to create an instance, without whatever intended interface, due to all failing with compiler errors. It isn't as if you could directly use it, such as member access with `.', in any event.