added src files

Names starting with __ are reserved to the implementation.

You want to make a copy of the cascades passed in, right? Well, you already have a copy in your parameter. In this case, that is a good thing. But save yourself another copy here and move:

__diffusions = std::move(cascades)