Здравствуйте, rg45, Вы писали:
R>Про списки инициализации не слыхал?
Блин. Я был так удивлен невозможностью преобразования типа, что совсем забыл о том, что инициализируется, по сути, базовый класс.
R>почему параметр передается по значению
Чтобы оптимизатор делал передачу структур до 64 разрядов через регистры. Впрочем, для не-POD этого, похоже, не добиться — он всегда генерит временную переменную, даже если по факту никаких вызовов конструкторов/деструкторов там нет (все вычисляется во время компиляции).
R>почему конструктор не explicit
Именно, чтобы можно было преобразовывать неявно.
R>и зачем оно вообще нужно.
В реальном коде 32-разрядная структура из битовых полей. Ее и удобнее, и выгоднее держать на регистре.