Considera il seguente programma: #include<stdexcept> #include<iostream> int main() { try { throw std::range_error(nullptr); } catch(const std::range_error&) { std::cout << "Caught!\n"; } } GCC e Clang con libstdc ++ chiamano std::terminatee interrompono il programma con il messaggio terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid Clang …
Questa domanda nasce da questo commento: spiegazione a vita Lambda per coroutine C ++ 20 riguardo a questo esempio: auto foo() -> folly::coro::Task<int> { auto task = []() -> folly::coro::Task<int> { co_return 1; }(); return task; } Quindi la domanda è se l'esecuzione della coroutine restituita foocomporterebbe UB. "Chiamare" una …
Poiché P0593 è stata accettata la creazione implicita di oggetti per la manipolazione di oggetti di basso livello , ora gli oggetti possono essere creati implicitamente in C ++ 20. In particolare, la formulazione introdotta dalla proposta consente a determinate operazioni (come std::malloc) di creare e avviare automaticamente la durata …
Dato il seguente modello struttura: template<typename T> struct Foo { Foo(T&&) {} }; Questo viene compilato e Tsi deduce che sia int: auto f = Foo(2); Ma questo non viene compilato: https://godbolt.org/z/hAA9TE int x = 2; auto f = Foo(x); /* <source>:12:15: error: no viable constructor or deduction guide for …
Ho il codice seguente: template <typename TC> class C { struct S { template <typename TS> void fun() const {} }; void f(const S& s) { s.fun<int>(); } }; // Dummy main function int main() { return 0; } Quando lo costruisco con gcc 9.2 e clang (9.0), ricevo un …
Mi sono imbattuto in questo problema durante il tentativo di specializzarmi tuple_size/ tuple_elementper una classe personalizzata in C ++ 17 per l'associazione strutturata. Il codice seguente viene compilato in GCC, ma non in clang (entrambe le versioni del trunk, vedere il link seguente). #include <type_traits> template<typename T, typename... Ts> using …
So che questo è un argomento piuttosto comune, ma per quanto il tipico UB sia facile da trovare, finora non ho trovato questa variante. Quindi, sto cercando di introdurre formalmente oggetti Pixel evitando una copia effettiva dei dati. È valido? struct Pixel { uint8_t red; uint8_t green; uint8_t blue; uint8_t …
Può int (*)[]essere un tipo incompleto? C 2018 6.2.5 1 dice: In vari punti all'interno di un'unità di traduzione un tipo di oggetto può essere incompleto (privo di informazioni sufficienti per determinare la dimensione degli oggetti di quel tipo) o completo (con informazioni sufficienti). Quindi sembra che se la dimensione …
Le specifiche C ++ specificano l'ordine operator newe il costruttore di Ain new C(A()). Il g ++ lascia che l'ordine sia A()-> new-> C(), ma clang ++ lascia che sia new-> A()-> C(). La differenza è causata da un comportamento non specificato? g ++: 7.4.0 clang ++: 10.0.0 #include <iostream> …
Sto cercando di comprendere i seguenti frammenti di codice Snippet n. 1 template <typename T> struct A { static constexpr int VB = T::VD; }; struct B : A<B> { }; Né gcc9 né clang9 generano un errore qui. D. Perché viene compilato questo codice? Non stiamo istanziando A<B>quando ereditiamo …
La frase "si verifica fortemente prima" viene utilizzata più volte nella bozza standard C ++. Ad esempio: Termination [basic.start.term] / 5 Se il completamento dell'inizializzazione di un oggetto con durata dell'archiviazione statica si verifica fortemente prima di una chiamata a std :: atexit (consultare, [support.start.term]), la chiamata alla funzione passata …
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.