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.
Il seguente programma è ben formato? #include <vector> struct A { explicit A(int) {} }; int main() { std::vector<int> vi = {1, 2, 3, 4, 5}; std::vector<A> va(vi.begin(), vi.end()); } Secondo C ++ 17 [sequence.reqmts], il requisito per X u(i, j); dove si Xtrova un contenitore sequenza, è: Tdeve essere …
Sono curioso di sapere come nullptrfunziona. Gli standard N4659 e N4849 dicono: deve avere tipo std::nullptr_t; non puoi prendere il suo indirizzo; può essere convertito direttamente in un puntatore e un puntatore in membro; sizeof(std::nullptr_t) == sizeof(void*); la sua conversione in boolè false; il suo valore può essere convertito in …
Quando vogliamo usare a static_assertin a if constexprdobbiamo rendere la condizione dipendente da alcuni parametri del template. È interessante notare che gcc e clang non sono d'accordo quando il codice è racchiuso in un lambda. Il codice seguente viene compilato con gcc, ma clang attiva l'asserzione, anche se if constexprnon …
Cerco di comprendere i tipi di espressione di C ++ e più leggo, più sono confuso, poiché trovo la bozza di C ++ molto difficile da digerire e quindi preferisco altre risorse ma si contraddicono a vicenda o non tengono conto del fatto che il la formulazione e la definizione …
Ho creato un modello di funzione per stampare alcuni dei contenitori stl #include <iostream> #include <vector> #include <string> template <template <typename, typename> class C, typename T, typename A> std::ostream& operator<<(std::ostream& os, const C<T, A>& container) { for (auto& elem : container) { os << elem << " "; } return …
tl; dr: penso che il mio static_vector abbia un comportamento indefinito, ma non riesco a trovarlo. Questo problema si verifica in Microsoft Visual C ++ 17. Ho questa semplice e incompleta implementazione static_vector, cioè un vettore con una capacità fissa che può essere allocata in pila. Questo è un programma …
Ovviamente possiamo concatenare due letterali di stringa in una constexprfunzione, ma per quanto riguarda la concatenazione di un letterale di stringa con una stringa restituita da un'altra constexprfunzione come nel codice seguente? template <class T> constexpr const char * get_arithmetic_size() { switch (sizeof(T)) { case 1: return "1"; case 2: …
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 …
La seguente domanda è collegata, tuttavia le risposte sono vecchie e il commento dell'utente Marc Glisse suggerisce che ci sono nuovi approcci dal C ++ 17 a questo problema che potrebbero non essere adeguatamente discussi. Sto cercando di far funzionare correttamente la memoria allineata per SIMD, pur avendo accesso a …
Il mio scenario è il seguente (ha funzionato in clang ma non in gcc) liba.hpp: inline int MY_GLOBAL = 0; libother.cpp: (dll) #include "myliba.hpp" void myFunc() { // MYGLOBAL = 28; } someexe.cpp: RunAppThatUsesBothLibAandLibOther(); Il problema è che la variabile inline mostrava 0 nei punti in cui mi aspettavo 28 …
Non compila quanto segue : #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } Provalo su godbolt L'errore del compilatore è: error: assignment of read-only reference 's' Ora nel mio caso …
Non sono molto abituato ad usare weak_ptre sto affrontando una situazione piuttosto confusa. Sto usando Intel XE 2019 Composer update 5 ( pacchetto 2019.5.281 ) in combinazione con Visual Studio 2019 ver. 16.2.5 . Compilo in 64 bit. Uso lo standard C ++ 17 . Ecco il codice per la …
Se non sbaglio, posso far std::transformfunzionare sul posto usando lo stesso intervallo di un iteratore di input e output. Supponiamo di avere un std::vectoroggetto vec, quindi scrivo std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op) usando un'operazione unaria adatta unary_op. Usando lo standard C ++ 17, vorrei eseguire la trasformazione in parallelo inserendone una std::execution::parcome primo argomento. …
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.