cost 100 ms
模板類中的(非)模糊靜態重載

[英](non)ambiguous static overload within templated class

我的類模板NodeMaker有 3 個名為create_node的靜態成員函數模板,它們通過使用 C++20 概念的參數來區分。 當從main()調用NodeMaker<>::create_node(x)時,一切都按我的預期工作,但是當從另一個成員函數調用create_node時,GCC ...

當其中一個包含包時,MSVC 無法消除功能模板之間的歧義

[英]MSVC not able to disambiguate between function templates when one of them contains a pack

最近我報告了一個涉及函數參數包的msvc 錯誤。 同樣,這里證明 msvc 實際上是符合標准的。 然后,當我將示例修改為如下所示時,我注意到修改后的代碼也無法在 msvc 中編譯,但可以在 clang 和 gcc 中編譯。 代碼如下: Demo鏈接 請注意,在上面的示例中,我們將C<T. ...

可變參數 function 模板重載優先規則是什么?

[英]What is the variadic function template overloading precedence rule?

我正在使用通用遞歸格式的可變參數 function 模板,每當我處理向量時,我都需要更改 function 的行為。 如果函數模板不是可變參數,則重載效果很好,但是對於可變參數 function 模板,解壓參數包時重載分辨率似乎會發生變化。 下面的一些代碼可以更好地解釋我的意思。 在complex ...

C++ 中的函數模板特化,沒有重載函數的實例

[英]Function template specialization in C++, no Instance of overloaded function

我正在學習 C++ 中的函數模板專業化,並負責編寫一個名為plus的模板函數,該函數返回它的兩個參數的總和,這些參數可能是不同類型的。 一種是按值接受,另一種是按指針接受。 作為一個額外的挑戰,我被要求重載這個函數,以便它連接兩個字符串。 問題是我在連接兩個字符串的函數的專業化重載上遇到錯誤。 ...

在 C++ 中重載乘法運算符的正確方法(雙向)

[英]Correct way to overload the multiplication operator in C++ (both directions)

我設法理解如何將重載運算符實現為成員函數。 這種方式認為對象(實例)總是被傳遞給操作符。 為了讓它工作,我在類之外定義了我的重載運算符。 它僅在我在頭文件 (.hpp) 中定義它時才有效。 如果我將函數添加到 .cpp 文件中,為什么編譯器會忽略它?。 代碼片段如下: 最后一個函數,如下所示, ...

使用模板類型重載 function 模板

[英]Overload function template using a templated type

我有一個給定的 function 像這樣: 這個 function 有各種過載,其中一些是基於概念的。 類似於以下內容: 現在我想使用模板類型添加一個重載,類似於以下內容: 為此,我需要指定V類型。 但是我找不到允許在不破壞代碼的情況下指定V的語法。 函數調用如下: 這意味着,模板類型是明確提供的, ...

C++ function 模板重載:空大括號與顯式 int

[英]C++ function template overload: empty braces vs explicit int

下面有一些非常基本的 C++ function 模板重載分辨率示例(從實際代碼中最小化) 這里我們有兩個案例。 在第一種情況下,編譯器應默認初始化某些東西(例如 S),在第二種情況下將 int 轉換為某些東西(例如 S) Godbolt 上的實時示例我相信在這兩種情況下,專業化都會贏得重載,因為 ...

在 Swift 中的可選參數上重載通用 function

[英]Overloading generic function on optional parameter in Swift

我正在嘗試編寫一個使用模板/泛型類型分派的庫,但我無法弄清楚 Swift 中的重載解析是如何工作的。 (有沒有比Swift 編程語言更多的技術參考?) 以下工作完全符合我的希望: 這段代碼也以同樣的方式工作: 但是當我編譯這個時: 我收到警告 果然,使用可選參數執行它會破壞堆棧。 我的第一個滑稽 ...


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