add c++ unpack function