template <typename T>
    void wrapTable(v8::Isolate* isolate, std::shared_ptr<const T> table, size_t internal, v8::Local<v8::Object>& obj) {

Should allow the compiler to deduce T from the call site.