function overload on full signature?

monarch_dodra monarchdodra at gmail.com
Wed Nov 14 09:56:46 PST 2012


On Wednesday, 14 November 2012 at 06:52:57 UTC, Rob T wrote:
> In C++ there are conversion operators, which are not exactly 
> the same as function overloading, but the correct function is 
> selected based on the type on the left hand side.
>
> Example
>
> class A
> {
>    operator bool(){ return _b; }
>    operator int(){ return _i; }
>    int _i; bool _b;
> }
>
> A a;
> bool b = a; // executes bool()
> int i = a; // executes int()
>
> Is there anything like C++ conversion operators in D? I have 
> used conversion ops in C++ and may want to use a similar 
> feature in D if available.
>
>
> --rt

Not really, that has *nothing* to do with "the correct function 
is selected based on the type on the left hand side", but just 
C++ trying to match the signature of the constructor it is trying 
to call. As a matter of fact, as a rule of thumb, there is no 
"left hand side" for the compiler. Just functions and arguments.

It is absolutely no different from:
//----
void foob(bool);
void fooi(int);
A a;
foob(a); //Executes bool()
fooi(a); //Executes int()
//----


More information about the Digitalmars-d mailing list