L'intenzione, con il nuovo standard, è di riportare interesse sul linguaggio e migliorare le performance.
C++0x, il nuovo standard atteso per il 2009, avrà un nuovo insieme di features, le caratteristiche principali sono:
- multithreading: supporto ai multi-thread.
- concetti: permette ai programmatori di specificare vincoli sui parametri dei template in modo da facilitare l'uso dei generici. Esempio di concetto:
concept LessThanComparable
bool operator<(const T& x, const T& y); } template
requires LessThanComparable
const T& min(const T& x, const T& y) {
return x < y ? x : y; }
- hash table: quattro nuovi containers non ordinati (std::unordered_map, std::unordered_multimap, std::unordered_set, std::unordered_mutiset )
- rvalue reference: limita la duplicazione di risorse quando non è necessario
- puntatori intelligenti(smart pointer): automatizza l'uso di risorse con puntatori shared_ptr condivisi, superando le limitazioni del std::auto_ptr del C++98.
- Deduzione dinamica del tipo: le nuove keyword auto e decltype permetteranno di ricavare il tipo di un espressione a run-time senza che viene dichiarata esplicitamente.
- Lambda expressions e chiusure: lambda expressions è una funzione senza nome, definita dov'è chiamata.esempio:
myfunc([](int x, int y) -> int {return x+y;} )
- Caratteristiche che semplificano i compiti ricorrenti.es. Un puntatore nullo letterale chiamato nullptr, enumerations fortemente tipato, delegating and inheriting constructors
- alignof e alignas: due nuovi operatori,per avere il controllare su compilazione ed esecuzione nell'ambiente di programmazione, si può decidere l'allineamento in memoria dei dati
- constexpr: nuova parola chiave che permette al programmatore di dichiarare che un determinato oggetto o espressione viene valutata e inizializzato a tempo di compilazione. Al contrario di const che si limita a constatare che l'oggetto in questione non cambi il suo stato dopo l'inizializzazione.
int buff[y]; //error, y isn't a compile-time constant
constexpr int f(int x){
return x * x; } //mandatory compile-time evaluation
int arr[f(3)];//OK, array's size is 9
- nuovi algoritmi
- Compatibile con i standard precedenti
Overview: C++ Gets an Overhaul, devx.com
Nessun commento:
Posta un commento