On Saturday, 9 August 2014 at 19:26:46 UTC, Meta wrote:
(which is why z[] gives you a type of (int, int, int) instead of Tuple!(int, int, int)).

That makes sense, and on second thought it wouldn't make sense to use a tuple as a range because it's not guaranteed to have only one element type. So, I can see how expanding the tuple is the reasonable thing to do.

For one thing, any type can overload the [] operator, so x[] can mean anything.

True, I just meant insofar as convention based on what I had (up until the tuples) thought to be the typical usage.

Usually slices *are* ranges, but they don't have to be, and it's not a good assumption to make.

Are there any specific cases where they're not?

In generic code, you should always use template constraints and static if along with the appropriate traits to check facts about a type.

Good advice, I think I will stick to this. My approach was sliding into 'programming by convention'.

Reply via email to