Andrei Alexandrescu wrote:
On 03/23/2010 04:06 PM, grauzone wrote:
Steven Schveighoffer wrote:
A while back, you identified one of the best interfaces for input
ranges:
E* getNext();
Which allows for null returns when no data is left. The drawback is
that E must be either referenced or allocated on the heap (providing
storage to the function is an option). But the killer issue was that
safeD would not allow it. However, in recent times, you have hinted
Nullable!(E) getNext(); ?
And if returning a reference...?
Extend auto ref to template parameters:
struct Nullable(auto ref T) { ... }
T would be actually a reference type if and only if you could return a
reference to the variable the template parameter was inferred from from
a SafeD function. Basically, the compiler would know that references to
T can be passed around freely. (SafeD allows ref returns under
circumstances.)
Not a solution I would prefer, but in the spirit of the design of D2 and
SafeD in general.
Andrei