const overload

Steven Schveighoffer schveiguy at yahoo.com
Fri Sep 23 13:44:52 PDT 2011


On Fri, 23 Sep 2011 16:35:59 -0400, so <so at so.so> wrote:

> On Fri, 23 Sep 2011 23:27:02 +0300, Jonathan M Davis  
> <jmdavisProg at gmx.com> wrote:
>
>> On Friday, September 23, 2011 23:19:15 so wrote:
>>> Hello everyone.
>>>
>>> I asked this a few times with no response.
>>> Could anyone explain me what is the rational behind this?
>>> Why it won't distinguish mutable overload from immutable as in C++?
>>
>> That compiles fine with the lastest dmd from git. Is it not compiling  
>> with the
>> latest release (dmd 2.055)?
>>
>> - Jonathan M Davis
>
> It compiles fine but the result troubling, wouldn't you expect:
>
> fun
> fun const
>
> as a result? This is how it works in C++.

steves at steve-laptop:~/testd$ cat testconst.cpp
#include <iostream>
using namespace std;

struct S {

     S& fun() {
         cout << "fun" << endl;
         return *this;
     }

     S fun() const {
         cout << "fun const" << endl;
         return S();
     }
};

int main() {

     S a;
     a.fun() = a.fun();
     return 0;
}
steves at steve-laptop:~/testd$ g++ -o testconst testconst.cpp
steves at steve-laptop:~/testd$ ./testconst
fun
fun
steves at steve-laptop:~/testd$


Seems, um to be the same, no?

-Steve


More information about the Digitalmars-d-learn mailing list