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: Что мне нужно изменить, чтобы получить временное выражение вместо объявления переменной?