У меня такая ситуация: есть огромный набор шаблонов, таких как std :: vector
, которые будут вызывать ] memmove ()
для перемещения частей массива. Иногда они захотят «переместить» части нулевой длины - например, если хвост массива удален (например, std :: vector :: erase ()
), они захотят переместить остаток массива , который будет иметь нулевую длину, и этот ноль будет известен во время компиляции (я видел разборку - компилятор знает), но компилятор все равно выдаст memmove ()
вызов.
По сути, у меня может быть оболочка:
inline void callMemmove( void* dest, const void* source, size_t count )
{
if( count > 0 ) {
memmove( dest, source, count );
}
}
, но это приведет к дополнительной проверке во время выполнения в случаях, когда count
неизвестен во время компиляции, что мне не нужно.
Можно ли каким-то образом использовать __ accept hint , чтобы указать компилятору, что, если он точно знает, что count
равен нулю, он должен исключить memmove ()
?