struct X
{
X() { std::cout << "X()\n"; }
X(int) { std::cout << "X(int)\n"; }
};
const int answer = 42;
int main()
{
X(answer);
}
Ich hätte erwartet, dass dies auch gedruckt wird
X(int)
, weilX(answer);
als Besetzung vonint
bisX
oder interpretiert werden könnte- überhaupt nichts, weil
X(answer);
als Deklaration einer Variablen interpretiert werden könnte.
Es wird jedoch gedrucktX()
, und ich habe keine Ahnung, warum X(answer);
der Standardkonstruktor aufgerufen werden soll.
BONUSPUNKTE: Was müsste ich ändern, um eine temporäre anstelle einer variablen Deklaration zu erhalten?