Run sudo make install to install the library to /usr/local/include/.
If you want to install it elsewhere, you can run the command as INCLUDEDIR=/some/other/install/directory sudo make install.
Run sudo make uninstall to uninstall the library from the $INCLUDEDIR environment variable (defaults to /usr/local/include/).
If you have forgotten where you installed it for some reason, you can see where it's located with the c-preprocessor (via cpp or g++ -E) and just remove it yourself. It's just header file.
An example usage is below. Please make sure to run your compilation command with the -pthread flag.
#include <iostream>
#include <string>
#include <unistd.h>
#include <ThreadPool> // Include my library
int main(void){
    uint nproc = std::thread::hardware_concurrency();
    ThreadPool p(nproc); // Initialize the thread pool with nproc threads
    std::vector<std::future<std::string>> futures; futures.resize(nproc); // Create a vector of futures
    char sc = 'A';
    for(auto& f : futures){
        // Enqueue the lambda task with the ThreadPool, storing the future so we can get our result later (and to prevent blocking).
        f = p.enqueue([](const char c) {
            sleep(2); // Sleep for 2 seconds. The *entire program* should only sleep for 2-3 seconds, due to the multithreading.
            return std::string(20, c);
        }, sc++);
    }
    // Print out our results.
    for(auto& f : futures){
        std::cout << f.get() << "\n";
    }
    std::cout << std::flush;
    return 0;
}
I needed a thread pool and wanted to learn more about C++ threading and templating.