I play with C++0x for some time and now I want to use variadic templates and tuple to implement class \"Task\". I\'m going to pass Task objects into newly created threads (u
It should be equivalent, but the only way to be sure is to test with the compiler you are using.
Note that you could use std::function with std::bind instead, e.g. something like:
template<typename ...T_arguments> class Task : public TaskCaller
{
std::function<bool (T_arguments&...)> functor;
public:
Task (bool (*func)(T_arguments&...), T_arguments... arguments)
: functor(std::bind(func, arguments...))
{}
bool dispatch() {
return functor();
}
// ...
Or better yet, let the user pass a std::function in:
class Task : public TaskCaller {
std::function<bool ()> functor;
public:
Task(std::function<bool ()> func) : functor(func) {}
// ...
That allows the user to choose what to pass instead of forcing him to use free functions or static member functions.