Почему это вызывает конструктор по умолчанию?

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);вызывает конструктор по умолчанию.

БОНУСНЫЕ БАЛЛЫ :Что мне нужно изменить, чтобы получить временное объявление вместо объявления переменной?

80
задан curiousguy 5 August 2012 в 01:13
поделиться