luabind с std::vector::at возвращает 'Попытка использовать незарегистрированный класс'
Я пытаюсь использовать luabind с std::vector. Я использую GCC 4.8.1 с C++11. Код конверсии показан ниже
template <typename T>
void luabindVector(lua_State* S, std::string tname) {
module(S)[class_<std::vector<T> >(tname.c_str()).def(constructor<>()).def(
"pushBack",
static_cast<void (std::vector<T>::*)(
const T&)>(&std::vector<T>::push_back)).
def("at",(T& (std::vector<T>::*)(size_t))(&std::vector<T>::at)).
def("resize",static_cast<void (std::vector<T>::*)(size_t)>(&std::vector<T>::resize)).
def("size",&std::vector<T>::size).
def("assign",static_cast<void (std::vector<T>::*)(size_t, const T&)>(&std::vector<T>::assign))];
}
со следующими вызовами
luabindVector<double>(L,"vectorDouble");
В Lua у меня есть команды
tans = vectorDouble()
tans:resize(3)
a=tans:at(1)
которая выдает ошибку std::runtime_error: "Попытка использовать незарегистрированный класс" с ошибкой 2
Обратите внимание, что push_back, resize, size и назначить все работают правильно, но программа завершается ошибкой при вызове tans:at(1). Из документации не ясно, как я должен делать это правильно. Кто-нибудь знает, что я делаю не так?