小编ara*_*net的帖子

为什么从函数返回 const 没有被检测为 const?

我有一个程序,它取决于 的结果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)

c++ runtime-error metaprogramming constants c++17

5
推荐指数
1
解决办法
744
查看次数

标签 统计

c++ ×1

c++17 ×1

constants ×1

metaprogramming ×1

runtime-error ×1