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