Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么是未命名左值?_C++_Lvalue - Fatal编程技术网

C++ 什么是未命名左值?

C++ 什么是未命名左值?,c++,lvalue,C++,Lvalue,我在草案中看到了一个被称为“未命名左值”的概念,在下面被删除的部分 [注意:临时对象、未命名左值和未链接的命名左值是临时对象,当相应的模板参数具有引用类型时,它们不是可接受的模板参数。[示例:…] 我搜索了很多,但是stackoverflow和google都没有给我答案。 我只找到了这篇关于价值分类的文章 但它没有帮助。并非所有左值表达式都有名称。事实上,N4296中的措辞为我们提供了一些示例: 对于引用或指针类型的非类型模板参数 常量表达式的值不应引用(或指针) 类型,不应为以下地址: 子

我在草案中看到了一个被称为“未命名左值”的概念,在下面被删除的部分

[注意:临时对象、未命名左值和未链接的命名左值是临时对象,当相应的模板参数具有引用类型时,它们不是可接受的模板参数。[示例:…]

我搜索了很多,但是stackoverflow和google都没有给我答案。 我只找到了这篇关于价值分类的文章


但它没有帮助。

并非所有左值表达式都有名称。事实上,N4296中的措辞为我们提供了一些示例:

对于引用或指针类型的非类型模板参数 常量表达式的值不应引用(或指针) 类型,不应为以下地址:

  • 子对象(1.8)
  • 临时物体(12.2)
  • 字符串文字(2.14.5)
  • typeid表达式(5.2.8)的结果,或
  • 预定义的func变量(8.4.1)
此外,公司关于价值类别的信息详细介绍了左值:

左值是标识非临时对象或对象的表达式 非成员函数

以下表达式是左值:

  • 作用域中变量或函数的名称,无论类型如何,如std::cin或std::endl。即使变量的类型是右值 引用时,由其名称组成的表达式是左值 表情

  • 如果函数或重载运算符的返回类型是左值引用,则函数调用或重载运算符表达式,例如
    std::getline(std::cin,str)或std::cout
    *ptr
    是没有名称的左值的一个示例函数调用表达式,其中所述函数具有左值引用的返回类型,也是一个未命名的左值。