I wrote a library that makes C++ callable from script languages, but instead of parsing headers it uses C++11 template metaprogramming and type inference, so it always parses exactly what the types are because it runs in the same compiler as your code. Unlike SWIG it is becoming simpler over time as I develop more powerful abstractions and I <i>do</i> understand 100% of how it works (although admittedly you have to have advanced C++ knowledge).<p>Definitely agree with the C++ corner cases thing being a challenge - at times I felt like I was writing another compiler on top of the C++ type system to handle the corner cases. But again, I used powerful abstractions to handle that. For instance, my library uses boost graph library and djikstra's algorithm to handle C++'s tangled web of automatic type conversions.<p><a href="http://github.com/dennisferron/LikeMagic" rel="nofollow">http://github.com/dennisferron/LikeMagic</a>