struct X
{
X() { std::cout << "X()\n"; }
X(int) { std::cout << "X(int)\n"; }
};
const int answer = 42;
int main()
{
X(answer);
}
Я бы ожидал, что это напечатает либо
-
X(int)
, потому чтоX(answer);
можно интерпретировать как листинг изint
вX
, или - ничего, потому что
X(answer);
можно интерпретировать как объявление переменной.
Однако он печатает X()
, и я понятия не имею, почему X(answer);
будет вызывать конструктор по умолчанию.
BONUS POINTS: Что мне нужно изменить, чтобы получить временное выражение вместо объявления переменной?