So this is how the code looks:
auto generateHash = [](std::vector &files) -> std::shared_ptr {
// Other code here
}
This is a C++11 lambda function, for a tutorial on how they work, you can look at this, else for a pure reference you can look at this.
In your case it defines an anonymous function that takes in std::vector and returns std::shared_ptr, and assigns this function to generateHash. the auto keyword tells the compiler to derive the type of generateHash (it this case it makes for a simple shorthand). the empty brackets ([]) means that the lambda doesn't capture and local variables for use within the lambda.