JLS : L' operatore con precedenza più bassa è la freccia di un'espressione lambda (->) , seguita dagli operatori di assegnazione. Seguito in quale direzione (priorità crescente, priorità decrescente)? - "seguito" significa che l'assegnazione ha priorità o priorità inferiore (rispetto all'operatore freccia)? Immagino, in aumento, perché "più basso" (per freccia) …
Considera questo codice: void foo() { goto bar; int x = 0; bar: ; } GCC e Clang lo rifiutano , perché il salto per bar:bypassare l'inizializzazione variabile. MSVC non si lamenta affatto (tranne l'uso di xafter bar:provoca un avviso). Possiamo fare una cosa simile con un switch: void foo() …
C ++ utilizza il streamofftipo per rappresentare un offset all'interno di un flusso (file) ed è definito come segue in [stream.types]: using streamoff = implementation-defined ; Il tipo streamoff è sinonimo di uno dei tipi integrali di base firmati di dimensioni sufficienti per rappresentare la dimensione massima del file possibile …
Dato il seguente modello di classe: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; definiamo Innerseparatamente per ogni specializzazione di Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; e quindi definire funa volta la funzione membro per tutte le specializzazioni di Outer: auto Outer<T>::f(Inner) -> …
Recentemente è venuto fuori in una revisione del codice che nel seguente esempio: enum class A : uint8_t { VAL1, VAL2 }; ... std::vector<A> vOfA; // Assume this is sized and full of some stuff. std::memcpy(wire_buffer, vOfA.data(), vOfA.size() * sizeof(A)); Dovremmo usare sizeof(std::underlying_type<A>::type)invece di sizeof(A). È possibile che questi possano …
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 …
std::basic_iosha un costruttore pubblico : explicit basic_ios (std::basic_streambuf<CharT,Traits>* sb); IMO, l'unica ragione per cui una classe ha un costruttore pubblico è usare un'istanza autonoma di quella classe in un programma. Se una classe esiste solo per far discendere altre classi da essa (come sembra essere il caso basic_ios), dovrebbero essere …
È necessario terminare un programma? In altre parole, è un programma che funziona per sempre tecnicamente un comportamento indefinito? Nota che non si tratta di loop vuoti. Parlando di programmi che fanno "cose" (cioè comportamenti osservabili) per sempre. Ad esempio qualcosa del genere: int main() { while (true) { try …
L'ottimizzazione della base vuota è ottima. Tuttavia, viene fornito con la seguente limitazione: L'ottimizzazione della base vuota è vietata se una delle classi di base vuote è anche il tipo o la base del tipo del primo membro di dati non statico, poiché i due oggetti secondari di base dello …
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 …
Ho difficoltà a comprendere il seguente paragrafo citato da cppreference su un banale costruttore predefinito. Ho cercato StackOverflow ma non ho ancora ricevuto una risposta chiara. Quindi per favore aiutatemi. Un banale costruttore predefinito è un costruttore che non esegue alcuna azione. Tutti i tipi di dati compatibili con il …
Voglio scrivere un codice portatile (Intel, ARM, PowerPC ...) che risolva una variante di un problema classico: Initially: X=Y=0 Thread A: X=1 if(!Y){ do something } Thread B: Y=1 if(!X){ do something } in cui l'obiettivo è quello di evitare una situazione in cui entrambi i thread stanno facendosomething . …
Nella documentazione di std::memory_ordersu cppreference.com c'è un esempio di ordinamento semplificato : Ordinazione rilassata Le operazioni atomiche contrassegnate memory_order_relaxednon sono operazioni di sincronizzazione; non impongono un ordine tra gli accessi simultanei alla memoria. Garantiscono solo atomicità e coerenza dell'ordine di modifica. Ad esempio, con xey inizialmente zero, // Thread 1: …
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.