Victor said:
Alf already mentioned another place where the standard mentions calling
a constructor:
12.1.5
"A default constructor for class X is a constructor of class X that can
be called without an argument."
Another:
12.1.8
"Default constructors are called implicitly to create class objects of
static or automatic storage duration..."
Obviously the standard indicates that a constructor can be "called" so
the term is obviously correct.
Nobody cared to submit a report on this yet, I am guessing. The absence
of a report is not a positive proof of the absence of a defect. I have
posted a message to comp.std.c++ asking about those two notes, as soon
as some conclusion is reached in the discussion that can insue, I'll
report back (for those who don't read c.s.c++).
After doing a search of the archives for that group (why didn't you
think of that?) I have to place my bets on a definative answer never
occuring. There are several places where members talk about explicitly
calling a constructor but no actual example that is given forth would
be convincing. For instance, several people describe placement new as
an explicit constructor call. Others indicate the following code:
class T {};
int main()
{
T();
};
This is an example of an explicit constructor call of type
T....creating an object that is never used. Others talk about the same
example in terms of it NOT being a constructor "call" or "invocation".
Yet another member asserts that static_cast is an explicit invocation
of the constructor:
(quote)
What is the rationale behind having static_cast invoke constructors
even if marked "explicit"?
I thought "explicit" was intended to say that a constructor does not
make sense as a conversion. But static_cast (or C style cast) is a
conversion that will use such a constructor anyway.
What "explicit" means is that the constructor should not be used unless
it is explicitly invoked. static_cast IS an explicit invocation of the
constructor.
(endquote)
So "static_cast<X>(y_inst)" would be considered an explicit call of the
constructor (assuming this conversion is possible). Others disagree of
course...
I don't think you are going to be able to say one way or the other. In
the end we are left with what the standard says when refering to
constructors and it repeatedly uses the term "call". Therefor anyone
else using the term is correct in doing so until that is changed in the
standard. Exactly what should be considered a call and what is not is
certainly highly debated.