为什么这个`auto`不会自动变成"`const`"

Den*_*hie 3 c++

可能重复:
c ++ 11中的自动引用

我学习C++越多,我越了解到目前为止(差不多;见下文)其中的一切基本上都是有道理的.我发现我并不是真的需要学习任何规则,因为一切都像预期的那样.因此,最重要的是要真正理解这些概念,然后其余的事情就会照顾好自己.

例如:

const int ci = 0;
auto &a = ci;       //automatically made const (const int &)
Run Code Online (Sandbox Code Playgroud)

这有效并且有意义.任何其他类型的东西a都是荒谬的.

但现在就拿这些:

auto &b = 42;       //error -- does not automatically become const (const int)
const auto &c = 42; //fine, but we have to manually type const
Run Code Online (Sandbox Code Playgroud)

为什么第一个错误?为什么编译器不会自动检测到这个?为什么const必须手动输入?我想要从根本上理解为什么事情有意义,而不必刻意学习任何严格的规则(见上文).

Ric*_*dle 12

类型42int,而不是const int.