The following program demonstrates the issue. This is using the STL version.
struct A {};
void f(int, A&) {}
int main()
{
ctpl::thread_pool pool(4);
A a;
// Does not compile
//f(0,std::move(a));
// So this shouldn't be expected to compile either, yet it does
//pool.push(f, std::move(a));
}