C ++ 20 è la destinazione per la versione di C ++ dopo C ++ 17. Questo tag dovrebbe essere usato (insieme al tag C ++) per domande sulle funzionalità di C ++ in pista per C ++ 20.
Il concetto ha loequality_comparable_with<T, U> scopo di dichiarare che gli oggetti di tipo Te Upossono essere confrontati uguali tra loro, e se lo sono, allora questo ha il significato atteso. Va bene. Tuttavia, questo concetto richiede anche common_reference_t<T&, U&>di esistere. L'impulso principale per common_referencee la sua funzionalità relativa sembra essere …
Fino allo standard C ++ 20 di C ++, quando volevamo definire un operatore fuori classe che utilizza alcuni membri privati di una classe template, useremmo un costrutto simile a questo: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename T> class …
Sto cercando un modo per identificare lambda vuote (senza capotasto) da altre lambda in una funzione modello. Attualmente sto usando C ++ 17 ma sono curioso anche per le risposte C ++ 20. Il mio codice è simile al seguente: template<typename T> auto func(T lambda) { // The aguments of …
Considera le seguenti tre structs: class blub { int i; char c; blub(const blub&) {} }; class blob { char s; blob(const blob&) {} }; struct bla { blub b0; blob b1; }; Su piattaforme tipiche in cui intsono presenti 4 byte, le dimensioni, gli allineamenti e il riempimento totale …
Siamo nel 2020 e C ++ 20 sta arrivando, insieme alla tanto attesa funzionalità dei moduli C ++. Ma dopo aver visto alcuni discorsi su CppCon trovo che i moduli C ++ si trovano in un posto strano, specialmente per i gestori di pacchetti Linux (pacman, apt, emerge, ecc ...) …
Poiché i concetti sono definiti come predicati in fase di compilazione, è anche possibile riutilizzare effettivamente questi predicati per algoritmi in fase di compilazione? Ad esempio, sarebbe possibile verificare se tutti i tipi in una tupla sono conformi a un concetto? Per quanto ho visto, non è possibile in alcun …
Il codice seguente viene compilato correttamente con clang-trunk in modalità c ++ 17 ma si interrompe in modalità c ++ 2a (imminente c ++ 20): // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta operator!=(const Foo&) {return Meta{};} …
Tutti i costruttori di std :: span sono dichiarati constexpr, tuttavia non riesco a farli funzionare in un contesto constexpr. Il non commento di una qualsiasi delle seguenti istruzioni comporterà un errore di compilazione. #include <array> #include <span> int main() { constexpr int carray[3] = { 0, 1, 2 }; …
Nello standard C ++ 20, si dice che i tipi di array sono il tipo di durata implicita . Significa che un array per un tipo di vita non implicito può essere creato in modo implicito? La creazione implicita di un tale array non provocherebbe la creazione degli elementi dell'array? …
Non è stato std::spanprogettato come un riferimento leggero alle sottoregioni di std::vector/ std::array/ plain array e simili? Non dovrebbe contenere anche operatori di confronto nella sua API, per essere coerenti con loro? Qual è stato il ragionamento alla base dell'esclusione? Nota: per gli operatori di confronto, intendo sia il set …
Gli intervalli arrivano in C ++ con la versione standard C ++ 20. La mia domanda: saremo in grado di costruire contenitori (esistenti) di librerie standard con qualsiasi intervallo? E, soprattutto, con le viste di portata? Ad esempio, questo: #include <vector> #include <iostream> #include <ranges> int main() { auto sq …
Nel seguente esempio, gli argomenti della funzione vengono utilizzati per verificare con un'espressione obbligatoria se un'espressione che li utilizza è ben formata. L'espressione richiede non accetta argomenti; utilizza direttamente le variabili nell'ambito della funzione: #include <cstddef> #include <vector> template<typename T> void Resize(T &v, std::size_t const n) { if constexpr (requires …
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 …
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.