26得票2回答
复制省略与结构化绑定一起使用是否有效?

强制拷贝省略是否适用于通过结构化绑定进行的分解?它适用于以下哪些情况?// one auto [one, two] = std::array<SomeClass>{SomeClass{1}, SomeClass{2}}; // two auto [one, two] = std:...

25得票5回答
为什么字面量和临时变量不是左值?

我读到过lvalues是“具有定义存储位置的事物”。 还有,字面量和临时变量不是lvalues,但没有给出这个说法的原因。 是因为字面量和临时变量没有定义的存储位置吗?如果是,那么如果不在内存中,它们在哪里呢? 我认为“定义的”在“定义存储位置”中有一定的意义,请告知是否如此。

25得票3回答
为什么右值引用变量不是右值?

假设我有一个函数 f 的两个重载版本。 void f(T&&); // #1 void f(T&); // #2 然后在另一个名为g的函数体内 void g(T&& t) { f(t); // calls #2 } 由于t被视为左...

23得票2回答
C++03. 在编译时测试rvalue-vs-lvalue,而不仅仅是在运行时进行测试。

在C++03中,使用Boost的Foreach,使用这个有趣的技术,可以在运行时检测一个表达式是左值还是右值。(我通过这个StackOverflow问题发现的:C++03中的Rvalues) 这里是一个演示在运行时工作的例子 (这是一个更基本的问题,当我思考我的另一个最近的问题时出现了。这...

23得票2回答
使用std::minmax和rvalues的结构化绑定

在使用std::minmax和结构化绑定时,我遇到了一个相当微妙的错误。似乎传递的rvalue并不总是像人们期望的那样被复制。最初我在自定义容器上使用了T operator[]() const,但字面整数也是一样的。 #include <algorithm> #include &...

22得票3回答
PODs, non-PODs, rvalue and lvalues

有人能解释一下rvalue、lvalue、POD和non-POD的细节,为什么下面标记的第一个表达式不正确,而第二个表达式是正确的吗? 在我看来,int()和A()都应该是rvalue,不是吗? struct A {}; int main() { int i; A a; int...

21得票3回答
函数中的r-value参数

当一个 r-value 在函数之间传递时,我对 C++ 的行为感到好奇。 看一下这个简单的代码:#include <string> void foo(std::string&& str) { // Accept a rvalue of str } void ...

20得票1回答
stringstream的.str()成员移动是否合法?

考虑以下示例: #include <sstream> template <typename T> inline std::string to_string(T const & op) { std::ostringstream result; r...

20得票4回答
能否获取'this'指针的地址?

我读到了this是一个纯右值,因此我们不能通过应用&this来获取它的地址。在我的代码中,我尝试使用引用绑定到this。我想知道哪种方法可以给出this的地址?或者两种方式都不正确?this究竟是什么?是左值还是右值,是关键字还是其他东西?void MyString::test_thi...

20得票2回答
为什么C++0x中的右值引用不是默认值?

即将到来的C++标准C++0x中一个很棒的新特性是“右值引用”。右值引用类似于左值(普通)引用,但它可以绑定到临时值上(通常,临时值只能绑定到一个const引用上):void FunctionWithLValueRef(int& a) {…} void FunctionWithRVal...