Below is my codes that failed to pass compilation of the command `g++ -std=c++11 a.cpp -Wall -lboost_thread -lboost_system`, if the amount of the arguments of the callback exceeds 9, in this example, it is when `TRY_VARIADIC` is defined.

```
#include <iostream>
#include <boost/thread.hpp>

void foo(void) {}

template <typename T, typename... argTs>
void foo(T a0, argTs ...args)
{
    std::cout << a0 << std::endl;
    foo(args...);
}

int main(int argc, char *argv[])
{
#if TRY_VARIADIC
    boost::thread t(foo<int, int, int, int, int, int, int, int, int, int>, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
#else
    boost::thread t(foo<int, int, int, int, int, int, int, int, int>, 1, 2, 3, 4, 5, 6, 7, 8, 9);
#endif
    t.join();
    return 0;
}

```

The variadic version of ctor of `boost::thread` allows more than 9 arguments, but I don't know how to make the compiler choose it. Any suggestions, hints, examples are highly appreciated. Thanks. :-)