<div dir="ltr">2013/2/23 deadalnix <span dir="ltr"><<a href="mailto:deadalnix@gmail.com" target="_blank">deadalnix@gmail.com</a>></span><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="im">On Friday, 22 February 2013 at 18:55:58 UTC, kenji hara wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
No, const/inout overload does not intend to solve 'method hiding' problem.<br>
<br>
To clarify the situation, I try to explain.<br>
<br>
class A {<br>
  void foo() {}<br>
  void foo() const {}<br>
}<br>
<br>
</blockquote>
<br></div>
You missed the important part. I'm talking about overload, not override. IE, not method hiding.<br>
<br>
What you have in class A here is useful for use cases that are now solved by inout (getting ranges/iterator from collection for instance).<br>
</blockquote></div><br></div><div class="gmail_extra" style>What you intend is:</div><div class="gmail_extra" style><br></div><div class="gmail_extra" style>class A {</div><div class="gmail_extra" style>  void foo() inout { bar() }</div>
<div class="gmail_extra" style>  void bar() {}</div><div class="gmail_extra" style>  void bar() const {}</div><div class="gmail_extra" style>}</div><div class="gmail_extra" style>void main() {</div><div class="gmail_extra" style>
  auto ma = new A();</div><div class="gmail_extra" style>  ma.foo();  // call foo() inout, and bar() is called in it.</div><div class="gmail_extra">  auto ca = new const A();</div><div class="gmail_extra">  ca.foo();  // call foo() inout, and bar() const is called in it.</div>
<div class="gmail_extra" style>}</div><div class="gmail_extra" style><br></div><div class="gmail_extra" style>? If so, it is just *impossible*. Inout method does not work as like that.</div><div class="gmail_extra" style>
Inside inout function, all inout qualified objects are treated as like const. In there, you never call mutable method from inout object. It is the inout design.</div><div class="gmail_extra" style><br></div><div class="gmail_extra" style>
Kenji Hara</div></div>