It is pretty simple:
const auto ptr = std::make_unique< A >();
This means that the pointer itself is constant! But the object that he holds is not. You can see how it works the other way around ...
A *const ptr = new A();
Same. The pointer is constant (it cannot be changed to indicate elsewhere), but the object is not.
Now you probably meant that you wanted something like that, no?
const auto ptr = std::make_unique<const A>();
This will create a constant pointer to constant A
There is also this other way ...
auto ptr = std::make_unique<const A>();
The object is permanent, but not a pointer.
BTW . That the "const propagation" you are talking about applies to C ++, just as you stated it.
source share