Considera il seguente codice . struct any { template <typename T> operator T &&() const; template <typename T> operator T &() const; }; int main() { int a = any{}; } Qui il secondo operatore di conversione viene scelto dalla risoluzione di sovraccarico. Perché? Per quanto ho capito, i due …
Considera la seguente struttura: struct s { int a, b; }; Tipicamente 1 , questa struttura avrà dimensione 8 e allineamento 4. Cosa succede se creiamo due struct soggetti (più precisamente, scriviamo nella memoria allocata due di questi oggetti), con il secondo oggetto che si sovrappone al primo? char *storage …
Considera questo semplice codice: void g(); void foo() { volatile bool x = false; if (x) g(); } https://godbolt.org/z/I2kBY7 Puoi vedere che gccné clangottimizzare né ottimizzare la potenziale chiamata a g. Questo è corretto nella mia comprensione: la macchina astratta è quella di supporre che le volatilevariabili possano cambiare in …
Considera il file di intestazione: class T { private: int const ID; public: explicit T(int const ID_) noexcept : ID(ID_) {} int GetID() const noexcept { return ID; } }; o, in alternativa: class T { private: int const ID; public: explicit T(int const ID_) noexcept; int GetID() const noexcept; …
Ho scoperto che i risultati sono diversi tra i compilatori se uso un lambda per acquisire un riferimento a una variabile globale con una parola chiave mutabile e quindi modificare il valore nella funzione lambda. #include <stdio.h> #include <functional> int n = 100; std::function<int()> f() { int &m = n; …
[basic.scope.pdecl] / 1 della bozza standard C ++ 20 conteneva il seguente esempio (non normativo) in una nota (citazione parziale precedente alla fusione della richiesta pull 3580 , vedere la risposta a questa domanda): unsigned char x = x; [...] x è inizializzato con il suo valore (indeterminato). Questo ha …
Supponiamo che io abbia un shared_ptrcon un allocatore personalizzato e un deleter personalizzato. Non riesco a trovare nulla nello standard che parli di dove dovrebbe essere archiviato il deleter: non dice che l'allocatore personalizzato verrà utilizzato per la memoria del deleter e non dice che non lo sarà. Questo non …
In C ++ 20, il concetto di POD è deprecato, presumibilmente perché è un tratto composito insignificante di essere banale e layout standard. Tuttavia, la definizione di POD nella bozza C ++ 20 non è esattamente "sia banale che standard-layout"; in realtà è: Una classe POD è una classe che …
Prendere in considerazione int main() { auto a = new int[0]; delete[] a; // So there's no memory leak } Tra l'inizializzazione e la cancellazione della copia, è consentito leggere il puntatore su a + 1? Inoltre, non il linguaggio permette al compilatore di serie aa nullptr?
#include <optional> bool f() { std::optional<int> opt; return opt; } Non compilare: 'return': cannot convert from 'std::optional<int>' to 'bool' Consultazione di riferimento Avrei pensato di trovare una spiegazione, ma l'ho letto come dovrebbe essere ok. Le conversioni implicite vengono eseguite ogni volta che nel contesto viene utilizzata un'espressione di un …
Cppreference ha questo codice di esempio per std::transform: std::vector<std::size_t> ordinals; std::transform(s.begin(), s.end(), std::back_inserter(ordinals), [](unsigned char c) -> std::size_t { return c; }); Ma dice anche: std::transformnon garantisce l'applicazione in ordine di unary_opo binary_op. Per applicare una funzione a una sequenza in ordine o per applicare una funzione che modifica gli …
Il valore del thispuntatore è garantito come costante durante la vita di un particolare oggetto? Non riesco a immaginare un caso in cui cambierebbe, ma non so se non mi sto perdendo qualcosa.
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.