我有一个程序,它取决于 的结果std::is_same_v <const value_t, decltype(value)>。但是,我发现当函数传递给这个表达式时,结果是意外的,导致我出现错误。
我认为返回的函数const value_t将被视为与 相同const value_t,但情况似乎并非如此,因为std::is_same_v <value_t, decltype(func())>返回的是 true。
我尝试使用std::as_const、使用static_cast返回此值,从constexpr函数返回它,但它们都没有按预期工作。
一个最小的、可重现的例子:
#include <type_traits>
#include <iostream>
inline const int x = 1;
/// A constant integer variable.
inline const int y() {return x;}
/// A constant integer function returning <x>.
int main()
{
/// <x> successfully passes as being a constant.
std::cout << std::is_same_v <const int, decltype(x)> << " ";
/// But returning it …Run Code Online (Sandbox Code Playgroud)