Это кто-то я. Позвольте мне очистить стенд.
Я никогда не говорил, что в Box box(Range(0.0,1.0),Range(0.0,2.0))
компилятор может избежать копирования объектов диапазона всего, создав их внутри коробки для начала. То, что я сказал, было:
Да, может, в частности, этот вид контекста копия Elision подпадает под критерий копирования Пропуска, указанного в 12,8/p31.3 Копирование и перемещение объектов класса [class.copy] стандарта:
(31,3) - когда объект временного класса, который не был связан с ссылкой (12.2) будут скопированы/перемещены в объект класса с тем же типом (игнорируя CV-квалификацию), то операция копирования/перемещения может быть опущена , создавая временный объект непосредственно в цель пропущенной копии/перемещения.
Да, может, часть идет для временных объектов, передаваемых в конструктор (Это может быть игнорировать в соответствии со стандартом, как упоминалось выше).Я никогда не говорил, что параметры можно отбросить до списка инициализаторов конструктора Box
.
В конце концов, этот случай не может претендовать ни на один из критериев, при которых копирование может применяться в соответствии со стандартом.
Я также сказал, что даже если определенный контекст квалифицируется как контекст, в котором может применяться копирование, компилятор не обязан следовать. Если вы полагаетесь на эти эффекты, ваша программа не считается переносимой.
Если ваш компилятор является нисходящим, будьте уверены. Он будет им доверять. – 101010
@ 101010 Хорошие ли современные компиляторы? Я не могу этого добиться. – Museful
Вы должны комментировать этот ответ, не задавая повторяющийся вопрос. – LogicStuff