Se passo il codice seguente attraverso la mia istantanea GCC 4.7, prova a copiare i messaggi di posta unique_ptrelettronica nel vettore. #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } Ovviamente non può funzionare perché std::unique_ptrnon è copiabile: errore: utilizzo …
Nella sezione Operazioni simili a STL di Bjarne Stroustrup The C ++ Programming Language 4th edition, il codice seguente viene utilizzato come esempio di concatenamento :36.3.6 void f2() { std::string s = "but I have heard it works even if you don't believe in it" ; s.replace(0, 4, "" ).replace( …
È ora disponibile una versione di anteprima di Visual Studio 2012 (la versione successiva dopo VS2010) . Qualcuno sa quali nuove funzionalità di C ++ 11 supporta? (Al momento non sono in grado di provarlo).
In C ++ 11, abbiamo quella nuova sintassi per inizializzare le classi che ci offre un gran numero di possibilità su come inizializzare le variabili. { // Example 1 int b(1); int a{1}; int c = 1; int d = {1}; } { // Example 2 std::complex<double> b(3,4); std::complex<double> a{3,4}; …
Stavo giocando con i lambda C ++ e la loro conversione implicita in puntatori a funzione. Il mio esempio iniziale li stava usando come callback per la funzione ftw. Funziona come previsto. #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback = [](const char *fpath, const struct …
Sto cercando di calcolare la lunghezza di una stringa letterale in fase di compilazione. Per farlo sto usando il seguente codice: #include <cstdio> int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf("%d %d", length("abcd"), length("abcdefgh")); } Tutto funziona …
In C #, c'è una bella sintassi sugar per i campi con getter e setter. Inoltre, mi piacciono le proprietà implementate automaticamente che mi consentono di scrivere public Foo foo { get; private set; } In C ++ devo scrivere private: Foo foo; public: Foo getFoo() { return foo; } …
Voglio sapere cosa [=]fa? Ecco un breve esempio template <typename T> std::function<T (T)> makeConverter(T factor, T offset) { return [=] (T input) -> T { return (offset + input) * factor; }; } auto milesToKm = makeConverter(1.60936, 0.0); Come funzionerebbe il codice []invece di [=]? presumo che std::function<T (T)> significa …
Nel codice seguente, la prima chiamata a fooè ambigua e pertanto la compilazione non riesce. Il secondo, con l'aggiunta +prima del lambda, risolve l'overload del puntatore alla funzione. #include <functional> void foo(std::function<void()> f) { f(); } void foo(void (*f)()) { f(); } int main () { foo( [](){} ); // …
Vorrei alcune informazioni su come pensare correttamente alle chiusure C ++ 11 e std::functionin termini di come vengono implementate e come viene gestita la memoria. Anche se non credo nell'ottimizzazione prematura, ho l'abitudine di considerare attentamente l'impatto sulle prestazioni delle mie scelte durante la scrittura di nuovo codice. Faccio anche …
Sto cercando di compilare il seguente programma di pool di thread pubblicato sulla revisione del codice per testarlo. /codereview/55100/platform-independant-thread-pool-v4 Ma sto ottenendo gli errori threadpool.hpp: In member function ‘std::future<decltype (task((forward<Args>)(args)...))> threadpool::enqueue_task(Func&&, Args&& ...)’: threadpool.hpp:94:28: error: ‘make_unique’ was not declared in this scope auto package_ptr = make_unique<task_package_impl<R, decltype(bound_task)>> (std::move(bound_task), std::move(promise)); ^ …
Le parentesi in C ++ sono usate in molti posti: ad esempio nelle chiamate di funzione e nelle espressioni di raggruppamento per sovrascrivere la precedenza degli operatori. A parte le parentesi extra illegali (come intorno agli elenchi di argomenti delle chiamate di funzione), una regola generale, ma non assoluta, del …
Quando provo a compilare questo codice (VS2010) ricevo il seguente errore: error C3499: a lambda that has been specified to have a void return type cannot return a value void DataFile::removeComments() { string::const_iterator start, end; boost::regex expression("^\\s?#"); boost::match_results<std::string::const_iterator> what; boost::match_flag_type flags = boost::match_default; // Look for lines that either start …
Capisco che il modo corretto per acquisire this(modificare le proprietà degli oggetti) in un lambda è il seguente: auto f = [this] () { /* ... */ }; Ma sono curioso della seguente particolarità che ho visto: class C { public: void foo() { // auto f = [] () …
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.