On Thursday, 5 September 2013 at 19:19:42 UTC, Jonathan
Crapuchettes wrote:
On Wed, 04 Sep 2013 11:49:41 +0200, anonymous wrote:
[...]
You can use a Template This Parameter [1] instead of inout:
----
auto opSlice(this This)()
{
static if(is(This == const)) alias QualifiedT = const
T;
else alias QualifiedT = T;
static struct Range {
QualifiedT front() @property {
----
[1] http://dlang.org/template.html#TemplateThisParameter
Thank you for the help. That worked, but now I ran into another
similar
issue. What if the Range struct is being defined outside of the
opSlice
method? I have a number of methods in a struct that return the
same range
type and would rather not have to have duplicate code or need
to use
mixins.
JC
Templatize Range and pass it This:
----
static struct Range(This)
{
static if(is(This == const)) alias QualifiedT = const T;
else alias QualifiedT = T;
QualifiedT front() @property {...}
}
auto opSlice(this This)()
{
return Range!This();
}
... more methods in the style of opSlice ...
----
If you need QualifiedT in opSlice, make it a template over This,
too.