Reading a BP's output value when called from C++

I want to call a BP function from C++. So I was thinking of using the AActor->CallFunctionByNameWithArguments() method. But I need to read the output value of the called BP function. Is there any way to achieve this?

From memory, I think you need to use the ProcessEvent function. Despite its name, it can handle return values.
You can see examples of how to structure arguments in the engine code.