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