On Wed, Jan 15, 2014 at 8:56 PM, Agustín K-ballo Bergé
- The lack of a variadic constructor for `fiber` and variadic arguments for `async` makes it difficult to use the library correctly (even in the presence of C++14 lambdas). The semantic of those calls is that of a deferred call, which is difficult to achieve otherwise (note that `bind` doesn't help here).
The review report (which I am writing now!) does not depend on my understanding this point, but on rereading your mail I realized I do not yet understand it. In my (obviously incomplete) mental model, a hypothetical fiber constructor: fiber f(some_callable, 3.14, "a string", 17); would be completely equivalent to: fiber f(bind(some_callable, 3.14, "a string", 17)); What am I missing? (If this is already well-explained elsewhere, I would appreciate a pointer as much as your own explanation.) Oliver may well understand your point already. But if you asked me to implement a variadic fiber constructor (and async() function), I would immediately forward to bind() inside each. Would that be a sufficient implementation? If not, why not? A broader question to those who requested a variadic fiber constructor (and async()): is it sufficient to provide that support only when the compiler supports variadic templates, or are you asking for the whole ugly C++03 workaround as well?