C++ Opaque library