this std::tr1 vs not std::tr1 is a bloody mess