Templates class member functions not conditional?
monarch_dodra
monarchdodra at gmail.com
Tue Sep 11 11:39:55 PDT 2012
On Tuesday, 11 September 2012 at 17:52:44 UTC, Jonathan M Davis
wrote:
> On Tuesday, September 11, 2012 19:37:02 monarch_dodra wrote:
>> However, when written like this:
>>
>> struct C(T)
>> {
>> private T val;
>>
>> // Gets front
>> @property T front()
>> {val = value;}
>>
>> //Writes to front
>> static if(isAssignable!(T,T))
>> @property void front(T value)
>> {val = value;}
>> }
>>
>> Then I think it reads alright.
>
> Whereas I think that that hards readibility, because it hides
> the fact that a
> static if is used. If you're submitting code for Phobos, please
> do something
> like
>
> static if(isAssignable!(T, T)) @property void front(T value)
> {val = value;}
>
> or
>
> static if(isAssignable!(T,T))
> @property void front(T value) { value = value; }
>
> rather than what you have above, otherwise it will harm
> maintainability.
>
> - Jonathan M Davis
Hum... Yeah, you are kind of right.
I actually am committing something, but the code is a 2 liner.
(enforce, then assignment).
Is one of these what you are suggesting?
//One
static if(isAssignable!(T,T)) @property void front(T value)
{
enforce(someCondition)
value = value;
}
or
//Two
static if(isAssignable!(T,T))
@property void front(T value)
{
enforce(someCondition)
value = value;
}
or
//Three
static if(isAssignable!(T,T))
@property void front(T value)
{
enforce(someCondition)
value = value;
}
(or just plain)
//Four
static if(isAssignable!(T,T))
{
@property void front(T value)
{
enforce(someCondition)
value = value;
}
}
Which do YOU think reads best in this case? That the style I'll
use in my submit.
I like //Three because it reads like an attribute.
Of course, I have no problem submitting it with the default
//Four if you think that is best. I'm just trying to do as best
possible.
More information about the Digitalmars-d-learn
mailing list