Yes, your class is functionally different from the queue provided by the stl. This line:
m_buffer = new T[capacity];
Means that the type T
has to provide a default constructor. This limitation is not imposed on you if you use the STL queue.
As an aside, when you're comparing performance of two different systems and you want to use random numbers as part of it, you're better off not seeding the random number generator. This:
srand(time(0));
seeds the random number generator using the current time. In a lot of cases this is what you want. However when you're comparing the performance of the two queues you want pseudo random numbers, but you don't want them to be different every time. That way you know you're comparing like with like. You don't want to end up testing your queue with a maximum length of 100 and the stl queue with a maximum length of 10000.