![](/img/trans.png)
[英]Is gsl::owner usable for shared-ownership?
比如Qt可以用在下面嗎? 在此示例中,所有權由 new-site 和parent共享,因為對 object 進行new的代碼可以delete w ,並且W的析構函數會將其自身從parent列表中取出。 然而,如果w沒有在新站點被刪除,那么parent將在它的析構函數中刪除它。 這是共享所有權的例子 ...
[英]Is gsl::owner usable for shared-ownership?
比如Qt可以用在下面嗎? 在此示例中,所有權由 new-site 和parent共享,因為對 object 進行new的代碼可以delete w ,並且W的析構函數會將其自身從parent列表中取出。 然而,如果w沒有在新站點被刪除,那么parent將在它的析構函數中刪除它。 這是共享所有權的例子 ...
[英]Expressing ideas directly in code - what does the definition mean?
我是 c++ 的新手,我正在閱讀核心指南,我遇到了這個: P.1:直接在代碼中表達想法在這里,它說要使用像Month month() const;這樣的東西。 而不是int month(); 所以我有兩個問題,為什么在 function 的末尾有一個 const ,它有什么作用? 以及如何定義月 ...
[英]How can I decay const char that is passed as reference to a function with variadic parameters?
我有一個像這樣的 function:void column(const std::string &value) { ... } void column(float value) { ... } template <class... TColumns> void row(co ...
[英]Why hasn't not_null made it into the C++ standard yet?
在第 N 次向原始指針添加注釋"// not null"后,我再次想知道not_null模板發生了什么。 C++ 核心指南是在很久以前創建的,一些內容已經納入標准,例如std::span (有些像string_view和std::array起源於核心指南本身,但有時會混淆)。 鑒於它相對簡單,為 ...
[英]How to prevent ODR violations in this case?
免責聲明:這個問題是關於防止意外的命名沖突,並確保以下代碼無法編譯/鏈接。 [編輯] 實際上,我很高興有一些東西可以阻止它編譯/鏈接,或者一些可以解決這個問題的東西,比如匿名名稱空間。 但是匿名命名空間不應該在標頭內 go 。 這里發生的是 ctor S::S 有兩個內聯定義,因此允許 link ...
[英]How do I define __cpp_exceptions for gsl:narrow to compile?
我又糊塗了:( 我看過這個討論: 在編譯時檢測異常是否被禁用我是嘗試使用 GSL 的新手。 我已將 GSL 文件夾復制到我的 PC,並在我的stdafx.h文件中添加了#include 。 但是gsl:narrow命令沒有公開。 然后我看到它指的是__cpp_exceptions宏/令牌。 我試 ...
[英]Are you meant to recover from contract violations?
賞金將在 4 天后到期。 此問題的答案有資格獲得+100聲望獎勵。 Lorah Attkins想引起更多人對這個問 ...
[英]Why do C++ regular expression functions use output parameters?
根據核心指南,C++ 中的輸出參數通常被認為是代碼異味。 然而,我們在正則表達式庫中有這樣的函數 template< class BidirIt, class Alloc, class CharT, class Traits > bool regex_match( B ...
[英]Why is this dangling-gsl warning invoked?
我正在使用 clang-tidy 分析代碼庫,並看到一個我不理解的警告。 警告由以下代碼行調用:void fun(const QString& bar) { const char* c_format = bar.toStdString().c_str(); expand_s ...
[英]Does gsl::not_null hurt performance?
C++ 核心指南建議使用gsl::not_null類型。 如 I.12 中所述:將不得為 null 的指針聲明為not_null : 幫助避免取消引用 nullptr 錯誤。 通過避免對 nullptr 進行冗余檢查來提高性能。 ... 通過在源代碼中說明意圖,實現者和工具可以提供更好的診斷, ...
[英]Defining interfaces (abstract classes without members) in C++
接口(C# 術語)是指沒有數據成員的抽象 class。 因此,這樣的 class 只指定了子類必須實現的契約(一組方法)。 我的問題是:如何在現代 C++ 中正確實現這樣的 class? C++ 核心指南 [1] 鼓勵使用沒有數據成員的抽象 class 作為接口 [I.25 和 C.121]。 ...
[英]C++ Core Guidelines for static member variables
我的類中有一個私有靜態向量,它保留一個指向從它創建的所有對象的指針。 這是必要的,因為每個對象都需要訪問來自所有其他對象的信息來執行一些計算: // Header file: class Example { public: Example(); private: static std ...
[英]How to use gsl narrow cast
我試圖了解如何使用gsl::narrow_cast而不是static_cast 。 我在 stackoverflow 上找到了一個函數,它有一個字符串作為參數,如果所有字符都是 ASCII(前 127 個字符),則返回 true。 我已經在我的代碼中實現了這個函數,我注意到 Visual Stu ...
[英]How to properly use “C++ Core Guidelines: C.146: Use dynamic_cast where class hierarchy navigation is unavoidable”
動機 C++ 核心指南建議在“類層次導航不可避免”時使用dynamic_cast 。 這會觸發 clang-tidy 拋出以下錯誤: Do not use static_cast to downcast from a base to a derived class; use dynamic_cas ...
[英]Error Handling with Core Guidelines GSL Expects, Ensures, and narrow_cast
我正在嘗試遵循 Cpp 核心指南並在適當的情況下使用 GSL。 特別是,我想將Expects和Ensures用於前置條件和后置條件,以及span和narrow_cast ,但錯誤處理並不可靠,並且不提供任何診斷。 當遇到錯誤時,GSL 只是調用terminate ,讓測試人員不知道是什么導致了終止。 ...
[英]In C++ Core Guidelines Per.4, why is the bad example intended to be faster?
我最近正在閱讀這篇文章,其中指出: 不要假設復雜的代碼一定比簡單的代碼快。 代碼復制如下: 例子,不錯// clear expression of intent, fast execution vector<uint8_t> v(100000); for (auto& c ...
[英]CppCoreGuidelines: What are hot int copies?
我一直在閱讀CppCoreGuidelines F.15 ,但我不理解參數傳遞表中的以下句子: “便宜” ≈ 少量熱 int 副本 “中等成本”≈memcpy hot/contiguous ~1KB 且無分配 “熱 int 副本”是什么意思? ...
[英]C++ Warning: Assigning newly created gsl::owner<> to non-owner
當我使用以下代碼時,我收到警告(來自應用 cppcoreguideline)。 代碼: 警告: 當我搜索並訪問此鏈接https://releases.llvm.org/8.0.1/tools/clang/tools/extra/docs/clang-tidy/checks/cppcoreguidel ...
[英]Don't use static cast for arithmetic conversions (cpp-core-guidelines)
msvc 的 cpp 核心指南代碼分析器告訴我警告 C26472 不要使用 static_cast 進行算術轉換。 使用大括號初始化、gsl::narrow_cast 或 gsl::narrow (type.1)。 對於這個片段 為什么我不應該在這里使用 static_cast ? 此外,使用大 ...
[英]Assert is seen as C style cast in Visual Studio
這是錯誤和代碼一瞥 我的一門課程要求我使用警告級別 4 並將警告視為 Visual Studio 中的錯誤。 除此之外,我們還需要激活 Cpp Core Guidelines。 然而,自從我激活這些選項后,我一直被警告錯誤 C26493 所困擾(不要使用 C 風格的演員表)。 顯然,他們認為我的“斷 ...