tail const
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Sat Dec 4 13:07:27 PST 2010
On 12/4/10 12:23 PM, Simen kjaeraas wrote:
> Simen kjaeraas <simen.kjaras at gmail.com> wrote:
>
>> What might be appropriate is a function tailconst( T )( T t ) that
>> returns a tail const version of the passed type. That is, given a
>> T[], const(T[]), const(T)[], immutable(T[]), or immutable(T)[], it
>> returns a const(T)[]. For a MyRange!R, const(MyRange!R), or
>> immutable(MyRange!R), it returns a MyRange!(R).tailconst_t. See bottom
>> of post for a (naïve) implementation.
>
> To expound further on this, I have created the attached module.
> Critique wanted.
>
Looks promising. A few comments.
* For TailXxx you need to handle built-in simple types (int, float...)
to return themselves. Also, structs for which hasIndirections returns
false also return themselves.
* tailconst_t does not obey Phobos' naming convention. I think it's fine
to use TailConst in spite of the apparent ambiguity.
* You may want to add more stringent checks for tailconst_t (well
TailConst etc) to make sure it's not bogus - has the same size,
compatible members etc.
Andrei
More information about the Digitalmars-d
mailing list