Because their signatures are the same in fact.
The type of each function parameter in the parameter list is determined according to the following rules:
...
4) Top-level cv-qualifiers are dropped from the parameter type (This adjustment only affects the function type, but doesn't modify the property of the parameter: int f(const int p, decltype(p)*); and int f(int, const int*); declare the same function)
That means, void func(int a) and void func(const int a) are considered as the same function type; then the overriding is valid.