Domande taggate «c++20»

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.

1
`Equality_comparable_with` deve richiedere` common_reference`?
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 …

1
Definizione fuori classe C ++ 20 in una classe modello
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 …
12 c++  templates  c++20 




2
Passare un concetto a una funzione
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 …


4
Rottura del cambiamento in C ++ 20 o regressione in clang-trunk / gcc-trunk quando si sovraccarica il confronto di uguaglianza con un valore di ritorno non booleano?
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{};} …

1
Lo span può essere constexpr?
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 }; …
11 c++  constexpr  c++20 


1
Perché a std :: span mancano gli operatori di confronto?
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 …
10 c++  std  c++20  std-span 

1
Saremo in grado di costruire container con viste in C ++ 20?
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 …
10 c++  c++20  range-v3 

1
Le espressioni richieste sono autorizzate a "catturare" le variabili dell'ambito allegato?
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 …


1
Creazione di oggetti impliciti non specificata
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 …

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.