cost 316 ms
可用於常量表達式的臨時對象

[英]Temporary objects that are usable in constant expressions

作為這個問題的后續,clang 接受那里提供的代碼。 這個問題有以下代碼: 這個問題有一個很好的答案,但它遵循 C++17 標准。 據我所知,關於常量表達式規則的措辭從 C++17 到 C++20 及更高版本相對變化。 基本上,它必須確定調用表達式func(0)是否為常量表達式; 所以首先我們必須知 ...

您應該通過引用還是使用臨時變量重載“=”運算符?

[英]Should you overload the "=" operator by reference or with a temporary variable?

對於此示例,考慮一個只有一個成員的 class。 我很好奇重載=運算符的正確方法以及為什么一種方法有效而另一種方法無效。 例如,此運算符重載似乎無法將數據從一個 object 正確復制到另一個。 示例 1 : 然而,這個例子工作得很好。 示例 2: 當使用以下代碼測試每個示例時... 例如 1 的 ...

為什么用指向非常量的指針初始化的指向 const 的指針的 r 值引用不會創建臨時對象並將其綁定?

[英]Why r-value reference to pointer to const initialized with pointer to non-const doesn't create an temporary and bind it with it?

如果我們想用不同的類型初始化一個引用,我們需要將其設為 const (const type*) 以便可以隱式生成一個臨時值並將該引用綁定到 with。 或者,我們可以使用 r 值引用並實現相同的效果 [1]: 右值引用可用於延長臨時對象的生命周期(注意,對 const 的左值引用也可以延長臨時 ...

引用元組作為函數參數

[英]A tuple of references as a function parameter

我不太明白為什么下面代碼中的第二次調用func不起作用: 臨時字符串"abc"何時銷毀? 編輯1 所以,最后,根據康桓瑋的說法,這是可行的: 但這不會: 正確的? 如果是,有什么區別? ...

臨時物化和 xvalue 表達式

[英]Temporary materialization and xvalue expression

cppreference 表示:任何在臨時物化后指定臨時 object 的表達式都是 xvalue 表達式(C++17 起) 。 臨時物化是: 任何完整類型 T 的純右值都可以轉換為相同類型 T 的虛值。此轉換通過用臨時值 object 評估純右值作為其結果 object 來從純右值初始化類型 ...

返回特征矩陣和臨時矩陣

[英]Returning Eigen matrices and temporaries

考慮以下 function Foo : 由於返回值優化,第(1)行不應創建任何臨時對象。 但考慮以下情況: (2)是否創建任何臨時對象? 更一般地說,在(2)中初始化矩陣的任何塊是否會創建任何臨時對象? 如果不是這樣,那就太好了。 否則,我可以重新定義Foo如下: (3)是在不創建臨時人員的情況 ...

在臨時 object 上創建 QListIterator?

[英]Creating a QListIterator over a temporary object?

目前我正在做一些代碼審查並偶然發現了以下結構: 我的第一感覺是這里的迭代器有問題,因為toList()按值返回QVariantList ,導致臨時 object。 因此,Ctor 被定義為QListIterator(const QList<T> &list)並且我們發現了這個 ...

為什么臨時 object 在表達式結束后還活着

[英]Why is temporary object living after end of the expression

為什么如果 會給一個UB 這個: 會好的? 我猜在第一種情況下,臨時 object 在表達式const string& a = getString();結束后立即過期而在第二種情況下,臨時對象的壽命將延長到 function 完成。 它是唯一一種在表達式背后延長臨時對象壽命的情況。 ...

C和C++中的臨時對象

[英]Temporary objects in C and C++

C代碼 Output C++代碼 Output 我知道“三規則”,但代碼會變得復雜,如果我們不遵守規則,大多數編譯器都不會給出錯誤。 所以我避免創建復制構造函數和重載賦值運算符。 為什么A()/A{}在C++中創建了一個臨時的object,而在C中卻沒有? 在 C 中創建臨時 object ...

在臨時對象上調用成員函數時生成警告

[英]Generating a warning when a member function is invoked on a temporary object

給定矩陣模板類mat<M,N,T>以下成員函數允許我有效地轉置行向量或列向量,因為它們具有相同/對應的內存占用: 我多年來一直在使用這個函數,習慣性地開始在臨時表達式(/*vector-valued expression*/).transposedView()上調用它,忘記它會返回對 ...

對臨時對象的哪些操作可以防止其壽命延長?

[英]What operations with temporary object can prevent its lifetime prolongation?

如您所知,在 C++ 中,如果臨時對象綁定到本地引用,則臨時對象的生命周期會延長到作用域結束。 但是如果使用臨時或其他操作執行強制轉換會發生什么,例如: 這里很明顯u和s引用了對應的臨時對象,但 Clang 和 GCC 仍然只是延長了其中一個臨時對象的生命周期,並沒有就哪一個達成一致: htt ...

訪問結構中的數組會導致發出叮當聲警告

[英]Accessing an array within a struct causes warnings with clang

用g++編譯它沒有警告,但用clang++打印以下內容: 這不正確嗎? get(0).c_arr不返回指向全局數組的指針嗎? 還是get(0)返回一個臨時變量並且編譯器錯誤地認為c_arr只是它的一個實例,而不是全局變量? 編輯 為什么將此臨時變量傳遞給函數可以在沒有警告的情況下工作? ...

使用 string_view 禁止臨時參數的 trim_left 實現

[英]trim_left implementation using string_view disallowing temporary parameters

我想實現一個非復制數據trim_left function,但又不想讓它接受臨時參數,使返回的string_view有效(數據還活着)。 我開始接受 string_view 作為參數,但我無法獲得如何保證數據有效的方法。 所以我做了這個: 我對第二個刪除模板的想法是禁用臨時 object 作為參數並 ...

引用臨時成員

[英]Reference to a member of temporary

考慮以下代碼: 上面的格式正確的代碼還是UB? 我懷疑從get()返回的引用,它在最后一個分號處懸空。 但是此時push_back已經被評估了,所以沒關系,不是嗎? ...

C++ 使用復制構造函數避免臨時 Object 破壞

[英]C++ Avoid Temporary Object Destruction using Copy Constructor

我有一個自定義類型Tree的std::vector ,並且我有一個循環將全部Tree推回向量。 問題是:我需要推回臨時Tree對象,但同時,我必須避免它們被釋放(我認為向Tree class 添加一個右值引用構造函數可以解決問題,但它沒有) . 樹 class: Function 推回樹: ...

臨時物化轉換——術語和概念的混淆

[英]Temporary materialization conversion - Confusion about terminology and concepts

嗨 stackoverflow 社區, 我已經進入 C++ 幾個月了,最近我一直在努力掌握圍繞“新”值類別、移動語義,尤其是臨時物化的概念。 首先,如何解釋“臨時實體化轉換”一詞對我來說並不簡單。 轉換部分對我來說很清楚(prvalue -> xvalue)。 但在這種情況下,“臨時”究竟是如 ...

引用初始化 - 臨時綁定到返回值

[英]Reference initialization - temporary bound to return value

在一篇關於 cppreference.com ( 臨時生命周期)的參考初始化的文章中,它說: 在 return 語句中臨時綁定到 function 的返回值不會擴展:它在返回表達式的末尾立即被銷毀。 這樣的 function 總是返回一個懸空引用。 此摘錄解決了通過綁定對臨時對象的引用來延長其生命周 ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM