cost 69 ms
將具有關聯值的 Swift 枚舉轉換為 C++

[英]Translating Swift enums with associated values to C++

在 Swift 中,您可以擁有一個帶有關聯值的枚舉類型。enum Thing { case num(Int) case two(String, Double) case other } var t: Thing = .num(123) t = .two("a", 6.022) t ...

std::variant 對於可能的類型具有指向給定類型數組的 ptr。 我可以存儲更多只需鍵入的信息嗎?

[英]std::variant having for possible type a ptr to an array of a given type. Can I store more information that just type?

我正在考慮使用std::variant來存儲基本類型,例如 float、int、float2、float2、bool2、bool4 等,這相當簡單,但我也希望構造一個持有指向類型的指針的變體對象大批。 我想出了這個解決方案,它可以編譯和運行而不會崩潰(這並不意味着那里沒有錯誤)): 但是,這樣做會 ...

接受對 std::variant 的引用的函數

[英]Function accepting a reference to std::variant

我正在嘗試將值傳遞給接受std::variant的函數。 我注意到我可以使用接受對變量值的 const 引用的函數,但不能單獨使用引用。 考慮這段代碼 給我錯誤 所以第一個問題是:為什么禁止這樣做? 我想不通。 我為什么要這樣做? 我正在嘗試使用兩個訪問器函數來讀取和修改使用std::vi ...

指定類型以從 std::variant 獲取的更簡潔的方法?

[英]Cleaner way to specify type to get from a std::variant?

我有可以簡化為的代碼 顯然,如果foo()返回錯誤的變體,這可能會拋出,但這不是我的問題。 (真正的代碼有一個catch )。 我的問題是decltype(a)違反了不要重復自己的原則。 有沒有更簡潔的方法來初始化 a 和 b,如果類型不符合預期仍然拋出? 特別是,我不想要static_ca ...

如何有效地初始化類模板中的 std::variant 數據成員

[英]How to efficiently initialize a std::variant data member in a class template

考慮以下類模板,它可以使用std::variant數據成員保存類型T的值或某個ErrorInfo類的實例: 如何有效地初始化變體T替代方案? 我可以用這樣的構造函數初始化它: 但是我可以使用什么語法/編碼技術在初始化期間啟用移動語義優化? 如果我定義一個采用T&&的構造函 ...

如何為每個 std::variant 替代項定義具有重載方法的類?

[英]How to define class with overloaded methods for each std::variant alternative?

我有一些std::variant類,每個類都有幾個替代方案,我想定義一個訪問者類模板,它將一個變體作為其模板參數,並將自動為每個類定義一個純虛擬void operator()(T const&) const變體中的替代T 這樣,我可以定義從這些訪問者模板類的實例繼承的子類,並且將被強制覆蓋每 ...

使用 C++ std::visit 時如何改進編譯器錯誤消息?

[英]How to improve compiler error messages when using C++ std::visit?

我在具有許多替代方案的變體上使用 C++17 的std::visit()函數,每當我忘記訪問者中的一個或多個替代方案時,編譯器產生的錯誤消息很難理解。 例如 template<class... Ts> struct overloaded : Ts... { using Ts::oper ...

std::variant 之前的無效聲明符

[英]invalid declarator before std::variant

我正在嘗試使用 std::variant 實現一個臨時的輕量級狀態機。 但是,似乎沒有聲明變體fsm正確,因為它失敗並出現以下錯誤: 我真的無法理解問題所在。 這是代碼: 'fsm' 之前的無效聲明符是什么? ...

為不帶宏的 std::variant 列表中的每個替代方法調用一個方法

[英]Invoke a method for each alternative in a list of std::variant without macros

我有一組 Writer 類,每個類都有不同的實現。 我有一個提供相同界面的作者列表。 調用列表中的方法應該對列表中的每個元素調用相同的方法(復合設計模式)。 為了避免虛擬調度的開銷,編寫器存儲在 std::variant 中,列表遍歷變體向量並使用 std::visit 和 std::invoke ...

"通用包裝對象的成員函數以修改返回類型"

[英]Generically wrap member function of object to modify return type

我正在嘗試創建一種能夠接受任何類型的可調用對象並包裝其成員函數之一(在本例中為operator() )以采用相同的參數,但修改(強制轉換)返回類型的類型。 一個例子如下: ReturnConverter可以獲取一個對象並覆蓋該對象的operator()以將它返回的任何內容轉換為Ret 。 問 ...

如果變體之一沒有特定字段,則無法訪問變體

[英]Unable to visit a variant if one of its alternatives does not have a specific field

我正在嘗試訪問包含多個類的變體。 其中一個沒有特定的字段value ,但我使用constexpr處理它,但是,編譯器仍然無法編譯。#include <variant> #include <iostream> struct A {}; struct B { int ...

在具有虛函數的類上調用 std::visit 是否安全?

[英]Is it safe to call std::visit on classes with virtual functions?

我想創建一個訪問者層次結構來處理std::variant的實例。 我想重寫子類中的一些方法以獲得更專業的行為。 我的代碼如下所示: 這編譯並且似乎工作正常: 這樣的代碼是否定義良好並且沒有未定義行為的風險? 我見過的所有std::variant示例都使用沒有 inheritance 或 lambd ...

C++ 變體包含自身的 map

[英]C++ variant containing a map of itself

我希望能夠創建一個包含std::map<std::string, MyVariant>作為其案例之一的變體。 理想的情況是能夠寫出類似的東西using MyVariant = std::variant<int, std::string, std::map<std::stri ...

通過 std::variant 而不是 inheritance 進行多態性時減少冗長的技術

[英]Techniques for cutting down on verbosity when do polymorphism via std::variant rather than inheritance

假設您在 2D 游戲框架或類似的東西(例如 GUI 框架)中有實體,其中有各種類型的實體共享公共屬性,如 position 和旋轉,但其中一些屬性必須在每個實體類型上處理例如,旋轉簡單精靈的執行方式與旋轉裝配好的 2D animation 骨架不同。 Obviously this could be ...

C++ 編譯器錯誤:使用已刪除的 function std::variant()

[英]C++ compiler error: use of deleted function std::variant()

我不斷收到以下錯誤消息,告訴我我正在使用已刪除的 function,我認為這是 std::variant 默認構造函數。 在我的 main.cpp 文件中,我有: 在我的 Document.hpp 中: 在我的 Document.cpp 中: 在我的 State.hpp 中: 在我的 Event. ...

如何在 C++ 中由 std::visit 調用的運算符函數中聯合多種類型?

[英]How is it possible to unite multiple types in the operator function called by std::visit in C++?

我正在使用 std::variant 和 std::visit 來調用運算符函數。 我有很多變體(它們主要從一個超類繼承),但大多數運算符函數應該返回相同的值。 有沒有辦法擁有一個操作符函數,每次調用這些子類中的一個時都會調用該函數(例如,如果使用子類作為參數調用普通函數,並且如果沒有這樣的函數,則 ...

“增量”`std::variant` 替代方案

[英]"increment" `std::variant` alternative

我想增加/減少std::variant的類型替代,基本上像這樣: 這里的問題是,雖然emplace期望 clang 的錯誤消息稱為“明確指定的參數”,但index似乎不是constexpr 。 顯而易見的選擇是這樣的: 但這就是我個人所說的“非常丑陋”和“維護背后的巨大痛苦”(特別是因為我 ...


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