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);
вызывает конструктор по умолчанию.
БОНУСНЫЕ БАЛЛЫ :Что мне нужно изменить, чтобы получить временное объявление вместо объявления переменной?