Closed tripleslash closed 10 years ago
Has to be some bug with the shared_ptr recognition. Doesn't recognize it as holder type somehow.
Hello, this is an incompatibility I intridocuded when taking the whole thing apart. The original luabind did all kinds of conversion trickery stuff so you could give any parameter at any of the 4 template argument indices. I switched to <class, base or base list, holder type, wrapper type>. The holder type is what you're trying to achieve there. The fix for your case would be to introduce a "luabind::no_bases" inbetween the parameters. That being said - the luabind I forked from was incredibly buggy with regards to shared pointers, which leads to the point where shared counts get fragmented, which again leads literally to death. As I noted in your first post, I have a version in personal use that preserves smart pointer integrity without resorting to custom deleter tricks that don't work anyways (if interested also have a look at the corresponding bug report in oberon's repo). However I made that change while also allocating user data memory from within the generated constructors (to store any size of object per value in one place), which basically breaks the luabind class machinery on the lua side (Ie. defining classes or deriving from wrap_base classes), because they relied on the constructor to in-place-construct into prescribed memory boundaries (which means that the prepared memory only really holds a pointer to the real object in the end if it was larger than 16 bytes or something). So it's currently a technical problem to somehow make that work again. I consider backporting the smart-pointer stuff so not too much time passes by until I fixed the classes. I also need to work out the implicit casting of smart pointers (which "worked" in the original source because the smart pointers were just stripped away, introducing the said problems).
To the initial problem: Is the "any parameter at any parameter index"-thingy that luabind had wanted? If so, I will reintroduce it and see if I can document it better so that anybody knows what's going on. I found it to be unintuitive when working on that part.
Thank you for your feedback, this really helps me a lot!
Hey, huge thanks for that! I should have seen the bases template parameter. Anything new regarding smart_ptr support?
Works in Oberon00's version.
Full error in german: