Using std::array I can declare both the array itself and it's objects as const.
const std::array<const int,2> a {1,2};
However, if I read the standard correctly, a declaration such as this only declares the array elements const. See this
const int a[2] {1,2};
The reason this matters is that if the complete object, in these cases a, is const then it's UB to alter any subobjects. If only the subobjects, like a[0] are const then they can be modified by "transparent replacement" and it's not UB. This is a new change in basic.life as of c++20. See this. It's also clear from the definition of arrays that array elements are subobjects. See this
For instance this would be legal if the complete object (total array) wasn't const.
std::construct_at(&a[0], 5);
So is there any way other than using the std::array wrapper to declare the complete array const?