C ++ 17 è il nome dello standard C ++ approvato nel 2017. Si basa sul precedente standard C ++ 14, migliorando il linguaggio principale e la libreria standard e aggiungendo alcune nuove funzionalità linguistiche.
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 …
#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 …
Come da un determinato tipo di variante using V = std::variant<bool, char, std::string, int, float, double, std::vector<int>>; dichiarare due tipi di variante using V1 = std::variant<bool, char, int, float, double>; using V2 = std::variant<std::string, std::vector<int>>; da dove V1include tutti i tipi aritmetici Ve V2comprende tutti i tipi non aritmetici V? …
Ho una funzione di template sovraccarico: template<typename T1, typename T2> auto overMax(T1 a, T2 b) { std::cout << __FUNCSIG__ << std::endl; return b < a ? a : b; } template<typename RT, typename T1, typename T2> RT overMax(T1 a, T2 b) { std::cout << __FUNCSIG__ << std::endl; return b < …
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 …
Sto lavorando a un progetto con C ++ 11 e ho provato a seguire il codice #include <atomic> struct A { std::atomic_int idx = 1; }; int main() { return 0; } Ottengo l'errore del compilatore error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]' std::atomic_int idx = …
C'è un modo per verificare in C ++ 11 se un enum è continuo ? È pienamente valido fornire valori enum che non lo sono. C'è forse una caratteristica come una caratteristica del tipo in C ++ 14, C ++ 17 o forse C ++ 20 per verificare se l'enum …
Il nostro team sta lavorando con una base di codice C ++ di oltre 10 anni e recentemente è passato a un compilatore C ++ 17. Quindi stiamo cercando modi per modernizzare il nostro codice. In una conferenza su YouTube ho sentito il suggerimento di sostituire le const char*stringhe globali …
Stavo giocando con autodentro std::pair. Nel codice seguente, la funzione fdovrebbe restituire un std::pairtipo che dipende da un parametro template. Un esempio funzionante: ESEMPIO 1 template <unsigned S> auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == 2) return …
Compilo questo programma con g ++ e clang ++. C'è una differenza: g ++ stampa 1, ma clang ++ stampa 2. Sembra che g ++: la variabile esterna sia definita nell'ambito più breve. clang ++: la variabile extern è definita nell'ambito globale più breve. La specifica C ++ ha qualche …
Questo C ++ è valido? int main() { constexpr auto sz = __func__ - __func__; return sz; } GCC e MSVC pensano che sia OK, Clang pensa che non lo sia: Compiler Explorer . Tutti i compilatori concordano sul fatto che questo è OK: Compiler Explorer . int main() { …
Mi sono imbattuto in questo comportamento std::gcdche ho trovato inaspettato: #include <iostream> #include <numeric> int main() { int a = -120; unsigned b = 10; //both a and b are representable in type C using C = std::common_type<decltype(a), decltype(b)>::type; C ca = std::abs(a); C cb = b; std::cout << a …
Di recente ho seguito una discussione su Reddit che ha portato a un bel confronto di std::visitottimizzazione tra i compilatori. Ho notato quanto segue: https://godbolt.org/z/D2Q5ED Sia GCC9 che Clang9 (immagino condividano lo stesso stdlib) non generano codice per controllare e generare un'eccezione senza valore quando tutti i tipi soddisfano alcune …
Ho un codice come questo: #include <vector> #include <utility> int main() { std::vector<bool> vb{true, false}; std::swap(vb[0], vb[1]); } Argomenti sulla sanità mentale a vector<bool>parte, questo funzionava perfettamente su: Clang per Mac Visual Studio per Windows GCC per Linux Quindi ho provato a costruirlo con Clang su Windows e ho ricevuto …
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.