On 11/16/15 12:42 PM, Steven Schveighoffer wrote:
On 11/16/15 12:35 PM, Steven Schveighoffer wrote:
I'm afraid without a working example, I can't figure out what's
*supposed* to work with inout/const.
Update, saw your other note. Working now, trying to figure out how to do
this correctly without any duplication (or wrapping).
-Steve
OK, I have figured it out.
inout isn't necessary here at all because everything is const internally.
For example, you had this:
List tail()
{
assert(root);
auto n = root.next;
incRef(n);
return List(n, allocator);
}
/// ditto
const(List) tail() const
{
assert(root);
auto n = root.next;
incRef(n);
return const(List)(n, allocator);
}
Which I was able to replace with this:
List tail() const
{
assert(root);
auto n = root.next;
incRef(n);
return List(n, allocator);
}
In any case, I think the choice between const and inout is confusing,
and warrants a more in-depth explanation (when should I choose const or
inout?)
-Steve