Il gcc non dà errori, tanto per cambiare, da solo il warning, mentre il g++ dà errori, anche se a sto punto non vedo perchè dichiarare il parametro const se poi si vuole modificarlo. Comunque le modifiche sono effettive, non valgono solo nella funzione, ma anche dopo.
I cast non modificano il codice, quindi puoi metterli tranquillamente.
![]()