История изменений
Исправление
MOPKOBKA,
(текущая версия)
:
Хотя я сейчас понял что в Rust есть преимущество для вызова dyn Trait, он всегда передает его как структуру с двумя полями, и распаковывает по регистрам, а С++ не подозревает что у нас всего два поля по сути, и создает объект на стеке (так что создавать на стеке придется два поля все же), и уже дает ссылку на стек.
Так что в C++ вызовы Trait не такие эффективные на Linux ABI. Интересно как у Rust дела на MS ABI.
Исходная версия
MOPKOBKA,
:
Хотя я сейчас понял что в Rust есть преимущество для вызова dyn Trait, он всегда передает его как структуру с двумя полями, и распаковывает по регистрам, а С++ не подозревает что у нас всего два поля по сути, и создает объект на стеке (так что создавать на стеке придется два поля все же), и уже дает ссылку на стек.