This is a defect in the standard, see CWG issue 1449. The text has been changed to
from an integer type or unscoped enumeration type to an integer type that cannot represent all the values of the original type, except where the source is a constant expression whose value after integral promotions will fit into the target type
Note: the issue's status, DRWP, means that officially, the standard has not yet been changed, and an argument can be made that at least your int64_t
example is legal in C++11. Compilers already implement the new rules, though, as this was already the intended meaning of the original wording.