cost 227 ms
對不完整類型使用 std::function 是否有效?

[英]Is it valid to use std::function with incomplete types?

我想知道使用不完整類型的std::function是否有效,例如在前向聲明的情況下。 我寫了這個小代碼: 即使S在聲明m時不完整,我也可以將返回類型聲明為完整類型(非指針返回類型)。 此代碼符合要求並正常工作,但我不確定此代碼是否符合標准。 因為如果返回類型不是普通函數中的指針,則不能轉發聲明返回 ...

C++中位域的特征

[英]Characteristics of bit-Fields in C++

閱讀https://en.cppreference.com/w/cpp/language/bit_field ,以下結論是否正確? 相鄰位域之間是否沒有填充是實現定義的(這在https://eel.is/c++draft/class.bit#:bit-field中有所不同) 位域在類對象中的放置是實 ...

使用沒有外部定義的外部鏈接聲明並在 _Generic 中使用的標識符是否違反語義?

[英]Does an identifier declared with external linkage w/o external definition and used in _Generic violate semantics?

來自最新的C2x (6.9p5)(添加了重點): 外部定義是外部聲明,它也是 function(內聯定義除外)或 object 的定義。如果在表達式中使用使用外部鏈接聲明的標識符(而不是作為 typeof 運算符的操作數的一部分其結果不是可變修改類型,或結果不是 integer 常量表達式的 si ...

概念由看似會產生無效表達式的類型滿足

[英]Concept is satisfied by a type that would seemingly produce an invalid expression

在下面的代碼中, can_foo概念測試是否可以在類型的實例上調用foo()成員 function。 我將使用它來測試兩個模板的實例: base有條件地啟用foo成員 function, derived覆蓋foo以調用其 base 的實現:template <typename T> co ...

Function 聲明必須可用,因為 arguments 都不依賴於模板參數

[英]Function declaration must be available as none of the arguments depend on a template parameter

以下代碼在 trunk gcc 和 clang 中編譯良好,但在 msvc for c++20 模式中失敗: 與消息: 適用於 c++17 模式的 msvc,因為/permissive-自 c++20 以來僅在默認情況下可用。 可以通過顯式指定模板類型輕松修復 msvc c++20,即f<T& ...

關於 std::vector 中不完整類型的混淆(或 Clang 錯誤?)

[英]Confusion (or Clang bug?) about incomplete types in std::vector

[vector.overview]/4 中的 C++20 標准狀態: 如果分配器滿足分配器完整性要求,則在實例化 vector 時可以使用不完整類型 T。 在引用向量的結果特化的任何成員之前,T 應該是完整的。 默認分配器std::allocate確實滿足allocator completene ...

序列點之間能否多次讀取volatile變量?

[英]Can volatile variables be read multiple times between sequence points?

我正在制作自己的 C 編譯器,以嘗試了解有關 C 的盡可能多的細節。我現在正試圖准確了解volatile對象的工作原理。 令人困惑的是,代碼中的每個讀取訪問都必須嚴格執行(C11,6.7.3p7): 具有 volatile 限定類型的 object 可能會以實現未知的方式進行修改或具有其他未知的副 ...

`T array[N]{}` 是值初始化還是聚合初始化?

[英]Is `T array[N]{}` a value initialization or aggregate initialization?

考慮一些類型T (為簡單起見,您可以假設為int )和一些整數常量N ,我們用它來定義這樣的數組: 根據cppreference ,值初始化定義如下: 這是在使用空初始化器構造 object 時執行的初始化。 但再往下寫: 在所有情況下,如果使用空括號 {} 並且 T 是聚合類型,則執行聚合初始化 ...

顯式調用 __call__ 有效並使用 __init__

[英]Explicit call to __call__ works and uses __init__

我正在學習 Python 3.X 中的重載,為了更好地理解該主題,我編寫了以下在 3.X 中有效但在 2.X 中無效的代碼。 我預計下面的代碼會失敗,因為我沒有為 class Test定義__call__ 。 但令我驚訝的是,它有效並打印出"constructor called" 。 演示。 所以 ...

Niebloids 可以在需要 Callables 的地方傳遞嗎?

[英]Can Niebloids be passed where Callables is required?

一般來說,除非明確允許,否則 C++ 程序嘗試獲取標准庫 function 的指針的行為是未指定的。 這意味着在將它們作為Callable傳遞之前應格外小心。 相反,通常最好將它們包裝在 lambda 中。 有關該主題的更多信息: 我可以獲取標准庫中定義的 function 的地址嗎? 然而,C+ ...

intmax_t 和 uintmax_t 是否保證大小相同?

[英]Are intmax_t and uintmax_t guaranteed to be of the same size?

我需要知道intmax_t是否總是與uintmax_t “相同類型”,除了使用補碼而不是無符號值。 或者用正式的術語來說,下面的代碼是否總是在符合標准的編譯器中編譯?#include <cstdint> // The important assertion: static_asser ...

不理解的模板和可訪問性行為

[英]Non understood template and accessibility behavior

無論如何, A::Stuff是protected的,那么為什么繼承自A並強制其成員的可訪問性protected導致錯誤?class A { protected: template <typename T> static void Stuff() { ...

在 C++ 中,我可以將單成員聯合數組視為元素數組嗎?

[英]In C++ can I treat an array of single-member unions as an array of the element?

假設我正在編寫一個運行時大小固定大小的數組 class,有點類似於 Rust 的Box<[T]> ,以便在我知道數組在初始化后不會更改大小時節省跟蹤容量的空間。 為了支持沒有默認構造函數的類型,我希望能夠允許用戶提供一個生成器 function,它獲取元素的索引並生成一個T 。 為了做 ...

為什么 `int (*)(float)` 指向 `int foo()` 會觸發警告,而 `int (*)(double)` 指向它卻不會?

[英]Why does having an `int (*)(float)` point to an `int foo()` trigger a warning, but having an `int (*)(double)` point to it doesn't?

我有這段代碼:int foo() { return 0; } int main() { int (*float_function)(float) = foo; } 當使用x86-64 GCC 12.2和-Wall編譯時,它會產生警告(鏈接): 警告:從不兼容的指針類型“int (*)() ...

是否允許編譯器在棧上的一個object出scope時不收回棧指針?

[英]Is the compiler allowed to not retract the stack pointer when an object on the stack goes out of scope?

我使用的是 Raspberry Pi Pico,它有兩個內核,都有一個 4KB 堆棧,core0 在 core1 之上,這樣 core0 在單線程應用程序中就有 8KB 的堆棧。 引發這個問題的要點如下: 這里我們在堆棧上分配了 4KB,“而我們有 8KB 的堆棧”。 然后我們從 scope 中得 ...

匿名結構中的常量引用成員變量是否會延長臨時變量的生命周期?

[英]Does a constant reference member variable in an anonymous struct extend the lifetime of a temporary?

考慮以下代碼: 因此GetTemp()返回一個臨時值 object,然后將其分配給常量引用變量。 但是,該常量引用變量是匿名局部結構的成員。 問題:C++ 標准是否保證臨時對象的生命周期會延長到循環終止之后? 考慮到這個問題,我本以為答案是否定的,即我在循環體中得到了一個懸空引用。 然而, gcc ...


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