That's because list initialization and assignment initialization are not the same.

Number n(5); // -> construct n using Number(int) constructor
Number m = 5; // -> implicitly convert 5 to Number...