想象一些函数(
写下以下代码是相当直观的:
RetrieveResult
),通过指针/引用/值返回对象。我不知道也不想知道具体的方式,因为这些可能会改变。我只想使用auto
存储结果,并在当前作用域内保护该对象免受意外更改,例如如果该对象被向上传播。写下以下代码是相当直观的:
const auto result = RetrieveResult();
如果RetrieveResult
通过值或引用返回一个对象,则一切正常。但如果该函数返回指针,则const修饰的是该指针而不是指针所指向的对象。那么我仍然可以修改该对象。因此,需要写成:
const auto const result = ....
在编译时会导致以下错误:
重复的“const”
当然,我可以像这样声明变量: const auto* ... const auto* const...
但是这种方式让我与指针密切相关,即它不是一种通用的解决方案。
是否有可能保持真正的常量性,并同时提供灵活性(独立于具体类型)呢?
->
的类。 :P - Rakete1111const auto const
不会产生任何编译器错误,只会产生一个警告:warning C4114: same type qualifier used more than once
。 - alexeykuzmin0