tbb::parallel_for was designed to not compile the example as written. It's protecting against a bug in the code. The range form of tbb::parallel_for copies the functor by value into multiple task objects. Hence each task will have a separate copy of mutex, and thus the mutex will not provide the intended synchronization.
The way to fix the code is declare the mutex outside of struct Parallel, and pass it via a pointer, similar to the pointer for "values".