Questo è un follow-up alla mia precedente domanda sui contenitori STL graziosi , per i quali siamo riusciti a sviluppare una soluzione molto elegante e del tutto generale. In questo passaggio successivo, vorrei includere la stampa graziosa per std::tuple<Args...>, utilizzando modelli variadici (quindi questo è rigorosamente C ++ 11). Perché …
Mi chiedo se sia possibile scrivere una funzione che restituisce una funzione lambda in C ++ 11. Naturalmente un problema è come dichiarare tale funzione. Ogni lambda ha un tipo, ma quel tipo non è esprimibile in C ++. Non penso che funzionerebbe: auto retFun() -> decltype ([](int x) -> …
Stavo cercando di creare un vettore di lambda, ma non è riuscito: auto ignore = [&]() { return 10; }; //1 std::vector<decltype(ignore)> v; //2 v.push_back([&]() { return 100; }); //3 Fino alla riga # 2, si compila bene . Ma la riga # 3 dà un errore di compilazione : …
Sono molto confuso sull'inizializzazione di valori e valori predefiniti e zero. e soprattutto quando entrano in gioco per i diversi standard C ++ 03 e C ++ 11 (e C ++ 14 ). Sto citando e cercando di estendere una risposta davvero buona Value- / Default- / Zero- Init C …
Questa è una domanda un po 'in due parti, tutta sull'atomicità di std::shared_ptr: 1. Per quanto ne so, std::shared_ptrè l'unico puntatore intelligente <memory>che è atomico. Mi chiedo se sia disponibile una versione non atomica std::shared_ptr(non riesco a vedere nulla <memory>, quindi sono aperto anche a suggerimenti al di fuori dello …
In C ++ 11 puoi usare un range-based for, che funge da foreachdi altri linguaggi. Funziona anche con semplici array C: int numbers[] = { 1, 2, 3, 4, 5 }; for (int& n : numbers) { n *= 2; } Come fa a sapere quando fermarsi? Funziona solo con …
In C ++ 11 emplace_back()è generalmente preferito (in termini di efficienza) in push_back()quanto consente la costruzione sul posto, ma è ancora così quando si utilizzapush_back(std::move()) con un oggetto già costruito? Ad esempio, è emplace_back()ancora preferito in casi come i seguenti? std::string mystring("hello world"); std::vector<std::string> myvector; myvector.emplace_back(mystring); myvector.push_back(std::move(mystring)); // (of course …
bool compare_exchange_weak (T& expected, T val, ..); compare_exchange_weak()è una delle primitive di scambio di confronto fornite in C ++ 11. È debole nel senso che restituisce falso anche se il valore dell'oggetto è uguale a expected. Ciò è dovuto a errori spuri su alcune piattaforme in cui una sequenza di …
c ++ 11 ha la possibilità di ottenere l'id del thread corrente, ma non è castable al tipo intero: cout<<std::this_thread::get_id()<<endl; uscita: 139918771783456 cout<<(uint64_t)std::this_thread::get_id()<<endl; errore: cast non valido dal tipo "std :: thread :: id" al tipo "uint64_t" stesso per altri tipi: cast non valido dal tipo "std :: thread :: …
Ciao, sto cercando di utilizzare std::threadcon G ++. Ecco il mio codice di prova #include <thread> #include <iostream> int main(int, char **){ std::thread tt([](){ std::cout<<"Thread!"<<std::endl; }); tt.join(); } Si compila, ma quando provo a eseguirlo il risultato è: terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted …
Perché C ++ 11 fa partecipare le funzioni " deleted" alla risoluzione dell'overload ? Perché è utile? O in altre parole, perché sono nascosti invece di essere cancellati completamente?
Ho un progetto che attualmente utilizza C ++ 11/14, ma richiede qualcosa di simile std::filesystem, che è disponibile solo in C ++ 17, e quindi non ho la possibilità di usarlo attualmente. Vedo, tuttavia, che è disponibile nel mio compilatore attuale come std::experimental::filesystem. È una buona idea utilizzare funzionalità sperimentali, …
C ++ 0x aggiunge hash<...>(...). hash_combineTuttavia, non sono riuscito a trovare una funzione, come presentato in boost . Qual è il modo più pulito per implementare qualcosa di simile? Forse, usando C ++ 0x xor_combine?
Come posso ottenere un conteggio del numero di argomenti in una funzione modello variadico? cioè: template<typename... T> void f(const T&... t) { int n = number_of_args(t); ... } Qual è il modo migliore per implementare number_of_argsquanto sopra?
Uno dei miei preferiti per i linguaggi derivati dal C (come matematico) è questo (-1) % 8 // comes out as -1, and not 7 fmodf(-1,8) // fails similarly Qual è la soluzione migliore? Il C ++ consente la possibilità di modelli e sovraccarico dell'operatore, ma entrambi sono acque torbide …
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.