Boost allows you to declare "return policies" to dictate how return values from C++ functions are handled. We currently always use the default policy, which translates objects; we should allow users to declare at least the "opaque" policy which does nothing special with the data (not even GC).