std::tr1 might not be supported by all compilers and will eventually be dropped by others. Using boost instead makes this more portable.