This is a huge ask. It's not a matter of just parsing a C++ header. C++ types use C++ features, many of which are messy and have no Rust equivalents.
C++ templates that use SFINAE depend on C++-specific method names and C++ syntax being supported by the types. Rust types don't have that, and it'd require creating a parallel universe for Rust types to look like C++ types.
Rust doesn't have move constructors. Just passing a C++ type from one Rust function to another would require supporting additional semantics that Rust has already promised to never have, and breaking that promise risks causing bugs in unsafe code and/or adding new level of complexity to Rust's generics (ubiquitous ?Move like ?Sized). Conversely, Rust doesn't guarantee that types will support a "moved-from" dummy state that C++ uses in its version of moves.