rvalue

    0热度

    3回答

    我是新来的C++,并试图学习指针的概念。我很困惑,为什么第一个和第四个语句会导致错误,而第一个和第二个语句工作正常。预先感谢任何帮助! int *p1; //Ok const int *p1;//Ok int *const p1; //error: default initialization of an object of const type 'int *const' const int

    1热度

    1回答

    以下代码中“univ”的类型是什么? template<typename T> void func(T&& univ) { // ?? } int sum(int a, int b) { return a+b; } int main() { func(sum); } 我不知道通用引用也可以使用函数。是func(sum);等效于func(&sum);还是

    3热度

    3回答

    我一直在学习右值引用(对我来说是新概念),并感到我收到下面的类功能的警告不解...... string&& Sampler::Serial() const { stringstream ss; . . [assemble a string value using data members] . return ss.str(); } 这编译成功

    3热度

    2回答

    我试图从一个函数构造一个对象,然后将它传递给使用它的函数(并使用它)。下面是我没有直接使用从createObject右值引用,因为我将回到释放的内存参考代码 std::unique_ptr<Object> createObject() { auto myobj = std::make_unique<Object>(); .. modify myobj .. retur

    2热度

    2回答

    下面的代码工作正常,据我了解,每次调用该函数时,都会创建一个局部变量(即矢量),并且所有权将在第一次调用时在右值引用中传输,并在一个const引用(如果我删除它甚至不会编译)在第二次调用。结果,当函数终止时,局部变量实际上并不会死亡,但当主参考文件超出范围时(即在main()的末尾),我认为! #include <iostream> #include <vector> std::vector

    0热度

    1回答

    我有这样一类: template<typename T> class MyClass { public: // ... T && operator()(uint64_t i, uint64_t j); // I want to add a member function like this. T & operator()(uint64_t

    -2热度

    1回答

    有人能解释我为什么在VC++ 12 串& S =字符串( “本”);但不是int & d = int(10); 初始化非const引用时调用了哪些运算符。 谢谢。

    0热度

    1回答

    众所周知,函数调用哪个返回类型是函数的函数是一个左值。 A function call is an lvalue if the result type is an lvalue reference type or an rvalue reference to function type, an xvalue if the result type is an rvalue reference to

    3热度

    4回答

    我最近看了关于C++ 11的白皮书,如果我写的困惑, void foo(X&) 这将要求左值而不是对于r - 值 ,如果我写的, void foo(const X&) 这将被称为两个R值和L值。 有人能给我一个例子这是什么意思吗?

    5热度

    1回答

    当我使用C此线编译++,但不是C: gmtime(&(*(time_t *)alloca(sizeof(time_t)) = time(NULL))); //make an lvalue with alloca 我通过这种差异惊讶。甚至没有C++的警告。 当我指定gcc -x c,该消息是: playground.cpp:25:8: error: lvalue required as unary