The opaque type is dangerous and rarely useful. However, there are particular times when an opaque type is the only way to solve a problem; for example, it is one of the few portable ways to implement an object with state in Fortran 77 (see Section 8.8). When a SIDL file uses an opaque type, Babel guarantees only bits will be relayed exactly between caller and callee. If there is a need to pass more information than an opaque provides, than the developer can simply pass a pointer to that information.
Use of a opaque carries a heavy penalty.
When Babel matures enough to support distributed computing,
any method calls with opaque in the argument list
(or return type) will be restricted to in-process calls only.