ThePhD / sol2

Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation:
http://sol2.rtfd.io/
MIT License
4.06k stars 493 forks source link

When registering a class that privately inherits from std::vector, it causes a compilation error. #1477

Closed wzhengsen closed 1 year ago

wzhengsen commented 1 year ago

IDE: visual studio 2022 Version: sol2 3.3.0

#define SOL_ALL_SAFETIES_ON 1
#include <sol/sol.hpp>
#include <vector>

class number_storage : private std::vector<int> { };
class number_storage1 : public number_storage { };

namespace sol {
    template <>
    struct is_container<number_storage1> : std::false_type { };
    template <>
    struct is_container<number_storage> : std::false_type { };
}

int main(int, char*[]) {
    sol::state lua;
    lua.new_usertype<number_storage>("number_storage");
    lua.new_usertype<number_storage1>("number_storage1");//compilation error at here.
    return 0;
}