Threading lambda functions
surely you can just use std::function&lt;void()&gt; instead of templating on the function type?
capturing by reference can go horribly wrong. It's not a bug in your library, just an observation ...

tthread::thread* startthread(size_t a, size_t b)
{
    return lthread::new_thread([&amp;] ()
        {
            std::cout &lt;&lt; "I'm in a thread!\n";
            std::cout &lt;&lt; "'a' is " &lt;&lt; a &lt;&lt; std::endl;
            b = 1;
        }
        );
}

int main()
{
    tthread::thread *t = startthread(1,2);
    t-&gt;join();
    delete t;
}

use_function_once is vulnerable to the function call throwing an exception: you should probably assign it to a smart pointer before calling, and lose the explicit delete.
that overload of new_thread also has a problem if either new or tthread::thread can throw: it will leak the heap-allocated Func. You can fix this with a smart pointer too.