Ist die Verwendung von const_cast für den schreibgeschützten Zugriff auf ein const-Objekt zulässig?

In C ++ habe ich eine Funktion, die nur Lesezugriff auf ein Array erfordert, aber fälschlicherweise als Empfang eines Nicht-Konstanten-Zeigers deklariert wird:

size_t countZeroes( int* array, size_t count )
{
    size_t result = 0;        
    for( size_t i = 0; i < count; i++ ) {
       if( array[i] == 0 ) {
           ++result;
       }
    }
    return result;
}

und ich muss es für ein const-Array aufrufen:

static const int Array[] = { 10, 20, 0, 2};

countZeroes( const_cast<int*>( Array ), sizeof( Array ) / sizeof( Array[0] ) );

wird dies undefiniertes Verhalten sein? Wenn ja - wann wird das Programm in UB ausgeführt - wenn Sie den const_cast ausführen und die Funktion aufrufen oder wenn Sie auf das Array zugreifen?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage