There should be an opDollar, or some other name, such as opEnd, to overload $ for user-defined classes/structs/unions. Or instead, it could even simply just access a length member if it exists. I have a struct that wraps an array and works like an array in almost every way except for the $ feature of arrays.