LINUX.ORG.RU

История изменений

Исправление q0tw4, (текущая версия) :

Дык, что помешает возвращать из библиотеки указатель на трейт?

Хм, а разная версия компилятора не помешает? И вообще оно сможет кастануть из void*? А то помню в кристале были реальные проблемы с тем, чтоб кастануть полиморфный указатель в void* и потом обратно - указатель терял динамический тип и вызывал методы базового класса. Собственно в расте вроде как тоже закос в мономорфность, так что могут быть проблемы. Ну если вместо таблицы вирт функций, встроенной в сам объект используется отдельный указатель на нее, автоматически подставляемый компилятором, но никак не сохраняющийся при касте объекта в void*.

Исправление q0tw4, :

Дык, что помешает возвращать из библиотеки указатель на трейт?

Хм, а разная версия компилятора не помешает? И вообще оно сможет кастануть из void*? А то помню в кристале были реальные проблемы с тем, чтоб кастануть полиморфный указатель в void* и потом обратно - указатель терял динамический тип и вызывал методы базового класса. Собственно в расте вроде как тоже закос в мономорфность, так что могут быть проблемы.

Исходная версия q0tw4, :

Дык, что помешает возвращать из библиотеки указатель на трейт?

Хм, а разная версия компилятора не помешает? И вообще оно сможет кастануть из void*, а то помню в кристале были реальные проблемы с тем, чтоб кастануть полиморфный указатель в void* и потом обратно - указатель терял динамический тип и вызывал методы базового класса. Собственно в расте вроде как тоже закос в мономорфность, так что могут быть проблемы.