Почему данные назначаются без создания дополнительной копии в списке инициализации?

Parashift хорошо объясняет списки инициализации, но не объясняет , почему создается дополнительная копия переменной перед назначением в теле ctor, но при назначении через список инициализации дополнительная копия не создается.
Я даже встречал совет использовать ++ i вместо i ++, потому что первый позволяет избежать создания временного i перед назначением. То же самое для POD, назначенных в теле ctor? Временная переменная создается до того, как произойдет присвоение?

Другими словами, зачем компилятору создавать дополнительную копию переменной? Почему нельзя просто назначить переменную напрямую?
Почему?

5
задан Nav 13 July 2011 в 05:30
поделиться