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?