C++ APIs may have slightly different behavior than other C++ APIs. This is a general catch-all document where these oddities are recorded along with a few other things that are good to know when using C++ interop.
Parameters with reference types
Parameters that have mutable reference types are bridged as inout. Parameters with immutable reference types (const ref)
are bridged as value types.
Lifetimes
Currently, lifetimes are extended to the end of the lexical scope if any unsafe pointers are used in that scope. TODO: this should be updated to extend lifetimes whenever a C++ type is used in that scope. Currently, if there is no unsafe pointer used in the scope, then normal Swift lifetime rules apply.
Borrowing Self
For mutating methods, self is borrowed and the access to self lasts for the duration of the call. For non-mutating
methods, the access to self is currently instantaneous.
More to come soon :)