Can someone please tell me when is it advisable to use tr1::array instead or C-style array? And how tr1::array is different from C-style arrays, other than the fact that tr1::array has cool member functions?
Well.. std::tr1::array has cool member functions! :-D
If you ever cursed the need to carry along the size of an C-array in a #define or constant or that you (or your co-workers) got confused with the pointer arithmetic involved when working with the members, then std::tr1::array comes to the rescue. Or maybe you ever wanted to pass multi-dimensional arrays around in a type-safe way?
Well.. what could be said about disadvantages? Maybe the error messages - for some compilers they tend to be a bit longer and more confusing... Also, if you and all your co-workers are good old C-cracks then all those :: and template<> stuff may be more confusing than good plain pointer (to pointer to pointer)..
Note that I didn't speak of performance. I think there's no difference... ;-)