MSVC 允许您使用关键字声明函数的返回类型const
。考虑到 MS C++ 文档中没有提供这样的实现(也许它存在于语法中,但我还没有到理解本专栏中描述的内容的阶段),预计在这种情况下const
功能将实施constexpr
。
const int F() {
int value;
std::cin >> value;
return value;
}
不过,上面写的代码可以编译成功。这个例子中发生了什么?看起来在这个例子中使用 const 是没有用的,即使 IDE 将标识符 F 视为 const int。
标准规定,类型不是类或数组的纯右值(即临时对象)会自动丢失
const
和volatile
。所以在你的情况下const
它什么也不做。如果从函数返回一个类,这是
const
有害的,因为 const 临时对象无法移动,而是会被静默复制。不,事情不是这样的。
现在它甚至可以
constexpr
编译,因为在 C++23 中它们允许它附加constexpr
到几乎任何函数。如果它不适用,它就会被悄悄地忽略。