Not sure if it is what you are looking for, but I also had some doubts on how to use Functions.
Defining one (lets say sum two symbolic vectors)
//Defining the function
const auto &v_1 = casadi::SX::sym("x1",5,1);
const auto &v_2 = casadi::SX::sym("x2",5,1);
const SX &sum = v_1 + v_2;
auto f_ = Function("f", {v_1, v_2}, {sum});
// Using it
auto v1_dm = DM({1,2,3,4,5});
auto v2_dm = DM({5,4,3,2,1});
const auto &result = f_(std::vector<casadi::DM>{{v1_dm}, {v2_dm}});
result[0]