
Craig Henderson wrote:
This is how it started :) I'm happy to change it back again if consensus is that it is a cleaner interface. But doesn't it enable/encourage misuse of the separation of map tasks?
You can use tag dispatching, Concepts or SFINAE to check for some properties of the function object (aka nb of parametrs etc).
I think we're misunderstanding each other. My point is that if it is an instance of a functor, then the developer may be tempted to presume a state of the object and store instance data. This is invalid as the map task object is created, used and then destroyed. Any attempt to share data between map objects breaks the MapReduce design and scalability properties (which need to be preserved for loyalty to the MapReduce paradigm and for future multi-machine scalability). Regards -- Craig