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.