dunno.
I never found a use for a class that also wanted to be an array which couldn't be made more easily and in a safer manner using a plain container (arrays, standard lists, whatever)
or a wrapper class over a standard container
edit: probably because I am biased to see array more as memory structure than as data structure so having behaviour behind [] makes me uneasy
If you have a container and you need to care about internal implementation details in order to use a simple access operator, you've already started off wrong enough that syntax won't save you no matter what it is.
I would also counter that you should be able to overload operators, as doing so maintains readability and consistency. I've used Actionscript, and that's a language in which you can't overload operators. It's awful.
You want a Vec3 class that can do standard vector operations with? Get friendly with "A.Add(B.Mult(C))" and similar. It ends up being an unreadable jumble of Lisp-like gobbledegook despite only involving common operators which are nearly always represented as operators rather than function even in the math. Oh, and does that code I wrote even compile? I dunno. It could be A.Add(Vec3) is an in-place add that has no return value. It could return the value with no side-effects. Or worst of all, it could return the results of an in-place add. Operator overloads come with implicit terms; which while they may not always be the case, gives a sturdy platform to build from. A + B * C implies that the entire equation is carried out with no side-effects and will return the result of the computation. Whereas A.Add(B.Mult(C)) suggests no such things. Likewise, and this is a somewhat important note,
operator overloading maintains Order of Operations. Which does, in fact, mean that all your typical laws of math apply. So A + B * C = A.Add(B.Mult(C)) and not A.Add(B).Mult(C). Which, again, is all about implicit suggestions based on past experience in order to allow someone who doesn't know the implementation details to effectively use it.
@Morley: I believe the proper description isn't "it gives you the tools to shoot yourself in the foot," but rather "it gives you a length of rope."
And now something completely unrelated, here's something neat you can do with atomic GPU counters:
http://renderingpipeline.com/2012/03/gpu-rasterizer-pattern/Record and play back the GPU's rasterization process in ultra-slow-mo. With the 2-poly quad render, it's really like "Oh hey, there's the hardware units."
Also another thing; a GDC talk about geometric algebra applied to game development:
http://www.terathon.com/gdc12_lengyel.pdf "Fundamentals of Grassmannian Algebra" basically covering quaternions, different types of vectors, different types of useful operations, ect. Worth a read if you want to know about why those weird game math tricks work.