The safest answer would be to make it a manual binding with error checking in the lua binding. That way lua still gets dynamic checking whilst c++ get static checking which is safer.