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

Со страницы Википедии для конструкторов копирования:

X a = X();     

// valid given X(const X& copy_from_me) but not valid given X(X& copy_from_me)
// because the second wants a non-const X&
// to create a, the compiler first creates a temporary by invoking the default constructor
// of X, then uses the copy constructor to initialize as a copy of that temporary. 
// For some compilers both versions actually work but this behaviour should not be relied 
// upon because it's non-standard.

В частности, часть:

 сначала компилятор создает временный объект, вызывая конструктор X по умолчанию, а затем использует конструктор копирования для инициализации в качестве копии этого временного объекта. "

Мой вопрос (при условии, что это правильно), почему это так? Из кода я бы предположил, что компилятор будет использовать оператор присваивания после создания X.I '

м угадать его, потому что назначение происходит в том же выражении, что и инициализация?

Кроме того, что может быть причиной для использования этой формулы, а не просто нормальной инициализацииX a; или если вы хотите скопировать?X a(b);

Ответы на вопрос(2)

Ваш ответ на вопрос