gpt4 book ai didi

c++ - 为什么变量不是 C++ 中的左值?

转载 作者:太空狗 更新时间:2023-10-29 20:19:40 33 4
gpt4 key购买 nike

#include <type_traits>

int main()
{
int n;
n = 0;

// failure!
static_assert(std::is_lvalue_reference_v<decltype(n)>);
}

n 可以放在左边,所以它显然应该是一个左值。

为什么 static_assert 会失败?

最佳答案

decltype对 id 表达式有特殊规则,推导它们的类型而不考虑值类别。如果您希望它根据 id-expression 通常具有的值类别推断出类型,您可以将 id-expression 括在括号中:

static_assert(std::is_lvalue_reference_v<decltype((n))>); 

(n) 与类型系统中的 n 具有相同的类型和值类别,但未被 decltype 特殊处理。由于表达式是左值,推导的类型将是左值引用类型。

关于c++ - 为什么变量不是 C++ 中的左值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57285096/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com