Сообщение Re[2]: ::operator new() в самописном стэке от 08.06.2023 20:21
Изменено 08.06.2023 20:22 Sm0ke
Re[2]: ::operator new() в самописном стэке
Здравствуйте, rg45, Вы писали:
R>По-моему, не стоит так уж избегать reinterpret_cast в данном случае, поскольку его использование инкапсулировано, локализовано и должным образом оттестировано, а не размазано по клиентскому коду.
Спасибо
R>P.S. И, возможно, даже имеет смысл заменить reinterpret_cast на двойной static_cast (с промежуточным преобразованием к void*) — чтобы следовать принципу использования преобразования наименьшей достаточной силы.
Почему двойной? ::operator new() итак возвращает void *
И в этом фрагменте std::nothrow версия, следовательно new может вернуть null pointer. Можно ли кастить null pointer через static_cast из void *?
return reinterpret_cast<pointer>(
::operator new(s_size * p_reserve, s_align, std::nothrow)
);R>По-моему, не стоит так уж избегать reinterpret_cast в данном случае, поскольку его использование инкапсулировано, локализовано и должным образом оттестировано, а не размазано по клиентскому коду.
Спасибо
R>P.S. И, возможно, даже имеет смысл заменить reinterpret_cast на двойной static_cast (с промежуточным преобразованием к void*) — чтобы следовать принципу использования преобразования наименьшей достаточной силы.
Почему двойной? ::operator new() итак возвращает void *
И в этом фрагменте std::nothrow версия, следовательно new может вернуть null pointer. Можно ли кастить null pointer через static_cast из void *?
Re[2]: ::operator new() в самописном стэке
return reinterpret_cast<pointer>(
::operator new(s_size * p_reserve, s_align, std::nothrow)
);Здравствуйте, rg45, Вы писали:
R>По-моему, не стоит так уж избегать reinterpret_cast в данном случае, поскольку его использование инкапсулировано, локализовано и должным образом оттестировано, а не размазано по клиентскому коду.
Спасибо
R>P.S. И, возможно, даже имеет смысл заменить reinterpret_cast на двойной static_cast (с промежуточным преобразованием к void*) — чтобы следовать принципу использования преобразования наименьшей достаточной силы.
Почему двойной? ::operator new() итак возвращает void *
И в этом фрагменте std::nothrow версия, следовательно new может вернуть null pointer. Можно ли кастить null pointer через static_cast из void *?