Domanda

Come molti di noi sanno (e molti, molti di più non), il C++ è attualmente in fase di redazione definitiva per la prossima revisione della Norma Internazionale, dovrebbe essere pubblicata in circa 2 anni.Bozze e documenti sono attualmente disponibili il sito web della commissione.Tutti i tipi di nuove funzionalità vengono aggiunte, il più grande di concetti e di espressioni lambda.C'è un molto completo Articolo di Wikipedia con molte delle nuove caratteristiche.GCC 4.3 e poi implementare alcune funzioni C++0x.

Per quanto riguarda le nuove funzionalità di andare, mi piace molto il tipo di caratteristiche (e appropriato i concetti), ma il mio definitiva leader è variadic modelli.Fino a 0x, lungo modello elenca hanno coinvolto Boost Preprocessore di solito, e sono molto sgradevole di scrivere.Questo rende le cose molto più facile e permette di C++0x modelli di di essere trattata come una perfettamente funzionali lingua utilizzando modelli variadic.Ho già scritto alcuni molto cool codice con loro già, e non vedo l'ora di usarli più spesso!

Quindi, quali sono le caratteristiche più impazienti?

È stato utile?

Soluzione

auto parola chiave per inferenza di tipo variabile

Altri suggerimenti

Lambdas ed elenchi di inizializzatori.

Inoltre, le modifiche per rendere più semplice portare C ++ in un modello di immondizia, sembrano piuttosto interessanti. Forse C ++ 1x porterà effettivamente alla garbage collection, ma 0x / 10 ha appena impostato le cose per l'eventualità.

Voglio Rvalues riferimenti.

Tutte le altre nuove caratteristiche sono cose che potremmo tranquillamente vivere senza(ahimè caratteristiche).Tuttavia, la mancanza di Rvalues in C++ finora ha causato centinaia di template library che gli autori hanno di "hack" in giro per il rotto Rvalue rif problema.

Modelli variabili! (Che combinato con riferimenti di valore r ci dà un inoltro perfetto!)

Discussioni e atomica.

Con i processori multicore ora la norma C ++ 0x avrebbe dovuto essere C ++ 07.

G.

Enum fortemente tipizzati ottengono il mio voto. Pascal ne ha avute solo da circa 40 anni, quindi è bello vedere il C ++ finalmente recuperare.

Tuttavia, la pubblicazione dello standard è davvero un non-evento. Ciò che è molto più importante è quando le funzionalità che si desidera utilizzare sono supportate in modo completo e affidabile con toolchain del mondo reale. Ci sono persone che sembrano divertirsi a scrivere codice conforme agli standard che non riesce a compilare su qualsiasi compilatore conosciuto. Buona fortuna a loro.

  1. Deve essere l'incorporazione di alcune delle librerie Boost (shared_ptr < > e in cima alla lista)

  2. Il controllo sull'installazione dei modelli dovrebbe finalmente risolvere il problema degli enormi tempi di compilazione e rendere effettivamente possibile l'uso del codice modello moderno in grandi progetti.

  3. Dattiloscritti dei modelli

Molte altre piccole ma importanti cose, ma sono importanti nel codice di produzione.

Giù i concetti per me. Ma elenchi di inizializzatori, lambda e modelli variadici sono un secondo vicino.

Non riesco a decidere tra Tipo di puntatore null , < a href = "http://en.wikipedia.org/wiki/C%2B%2B0x#Tuple_types" rel = "nofollow noreferrer"> Tipi di tuple o Regex . Anche "Foreach" è lassù. "Puntatori intelligenti" è ovvio ... :-)

Fondamentalmente, non vedo davvero l'ora di aggiornare.

Personalmente penso che un uso intenso del tipo di puntatore null catturerà molti bug. Le tuple sono ottime per gestire i dati relazionali. Un sacco di cose interessanti.

Non è grande, ma adoro l'idea di un vero nullptr . Avrebbe dovuto essere una parola chiave fin dall'inizio di git-go.

Chiusure per me.

parola chiave automatica

Lambdas e Concetti

Parentesi angolare nelle dichiarazioni di modelli nidificati.

Così potrò scrivere

std::vector<std::vector<int>> a;

invece dell'orribile

std::vector<std::vector<int> > a;

La for (auto x : collection) sintassi dell'iterazione è molto interessante, penso ... riduce letteralmente la dimensione di molte intestazioni di loop di un fattore di 4 o più (i tipi di iteratori sono spesso ... verbosi)!

Significa anche che non è necessario dereferenziare l'iteratore nel corpo del ciclo (con un ciclo iteratore tradizionale, è sempre necessario utilizzare *i o i->... per ottenere il valore dell'elemento, ma qui puoi semplicemente usare x), che in alcuni casi rende il codice molto più bello.

unicode, multithreading, hash_tables, smart pointer ed espressioni regolari.

ps: chiediti perché non possono semplicemente fare una revisione del codice gr8 e accettare tutte le librerie boost e tr1 negli standard e semplificare la vita a tutti. Tutto ciò che dovrebbero quindi risolvere è concordare un modello di raccolta dei rifiuti opzionale funzionante.

Puntatori intelligenti. Fa davvero un mondo di differenza non dover gestire esplicitamente gli oggetti allocati in heap allocati in memoria.

Ovviamente devi ancora " sapere cosa stai facendo " ;, ma nella mia esperienza ha ridotto il numero di bug relativi alla memoria di almeno un ordine di grandezza nel software che ho lavorato con.

La sintassi va di male in peggio.

I template variabili e i lambda sono belli, sebbene la sintassi di entrambi sia sfortunatamente piuttosto discutibile.

Mi piace constexpr specialmente in combinazione con modelli variadici e letterali definiti dall'utente possiamo finalmente avere letterali binari e molte altre chicche.

obj.bitmask |= 00001010B; 

REGEX !! e librerie di programmazione parallele anche se non conosco ancora le caratteristiche di tutte.

Letterali stringa grezzi ! Pensavo che i blocchi di stringhe simili a Python fossero fantastici, ma mi sbagliavo! In C ++ 0x i valori letterali di stringa non elaborati sono incredibilmente utili per la formattazione del testo. I linguaggi di markup possono essere scritti direttamente nella tua fonte!

per il momento mi è piaciuto molto del C ++ 0x con cui ho giocato:

  • nullptr
  • static_assert
  • lambda
  • shared_ptr e weak_ptr
  • unique_ptr
  • decltype e auto

Non ho mai provato <regexp> ... Ho pensato che fosse una grande idea ... ma non mi sono nemmeno preso il tempo di guardarlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top