¿Funcionará correctamente el desplazamiento de bit por cero bits?

Di que tengo una función como esta:

inline int shift( int what, int bitCount )
{
    return what >> bitCount;
}

Se llamará desde diferentes sitios cada vez quebitCount no será negativo y estará dentro del número de bits enint. Me preocupa especialmente la llamada conbitCount igual a cero, ¿funcionará correctamente entonces?

También existe la posibilidad de que un compilador que vea el código completo de la función al compilar su sitio de llamadas reduzca las llamadas conbitCount igual a cero para un no-op?

Respuestas a la pregunta(12)

Su respuesta a la pregunta