On Tuesday, 12 March 2013 at 16:41:32 UTC, Steven Schveighoffer wrote:
On Tue, 12 Mar 2013 12:32:22 -0400, monarch_dodra <[email protected]> wrote:
On Tuesday, 12 March 2013 at 16:16:07 UTC, Andrei Alexandrescu

Crossed my mind a few times that fresh non-infinite ranges should be empty.

s/should/could/

In any case, that's a very dangerous logic to follow. Not-initialized means not initialized. At that point, the concept of empty or not empty is irrelevant, it's a wrong call.

No, ranges can be initialized without a constructor. Structs are. Classes aren't. But a class with empty as an enum would work.

Depends on your definition of "initialized" I guess. Sure, you can create a struct instance without a constructor. Try using a RefCounted!(AutoInit.No) and see what happens.

The idea is that the ultimate underlying source of empty is an enum. Since it's an enum, it should be calculable at compile-time, and it should always be false, regardless of the state of the range (invalid or valid).

Yes. *empty* will always answer false. My point though is that it's not just because range.empty says false that the range is ready for use.

The problem is whether NON-infinite ranges are empty or not. Looks like there are cases where they could be non-empty.

-Steve

I think that each range should be responsible for its own initialization semantics.

Reply via email to