¿Cómo se aplican const auto y auto const a los punteros?

Estaba probando un código y me pregunto cómoconst el calificador en C ++ se aplica a los tipos de puntero cuando se usaauto.

int main()
{
  int foo = 1;
  int bar = 2;

  //Expected: const int * ptr_to_const_int = &foo;
  const auto ptr_to_const_int = &foo;

  //Expected: int * const const_ptr_to_int = &foo;
  auto const const_ptr_to_int = &foo;


  *ptr_to_const_int = 3; //Thought this would error
  //ptr_to_const_int = &bar; This does error.
  *const_ptr_to_int = 3;

  return 0;
}

Me doy cuenta de que hay una pregunta similar que pregunta si son iguales, estoy preguntando más específicamente cuál es la regla aquí que se aplica a la deducción del tipo de puntero final.

Respuestas a la pregunta(1)

Su respuesta a la pregunta