2013-06-26 8 views
5

Come sapete, Boost ha molti tratti tipografici. C++ 11 ha portato alcuni di questi oltre allo standard, ad es. il is_pointer e is_base_of.Perché il C++ 11 non ha incorporato tutti i tratti tipografici di Boost?

Ci sono altri come has_greater e has_greater_equal che C++ 11 non ha incorporato. Perchè no? Ci sono piani per includerli nei prossimi standard? C'erano dei documenti da parte del comitato degli standard o Bjarne Stroustrup su questo?

+1

Non sono sicuro se troverete una risposta definitiva ma solo speculazioni per ora. Un'ipotesi potrebbe essere che non credessero che ci fosse abbastanza richiesta o uso e quindi preferirei mantenere il nuovo standard conciso possibile per ora. – dchhetri

+3

@j_kubik: Non è un dup. La risposta puntata se per 03 a 11. Questa domanda è più sugli 11 a 14. –

+0

@EmilioGaravaglia Ammetto che hai qualche ragione, ma il mio punto è che forse la domanda è leggermente diversa, ma la risposta rimane la stessa. Gli standard futuri dovranno contenere quasi tutto da quello attuale, quindi non aggiungere roba ora darà più libertà in futuro - se le implementazioni esistenti si evolveranno e saranno ampiamente utilizzate, alla fine arriveranno allo standard. –

risposta

11

C++ 11 è stato approvato nel mese di agosto 2011. rilevamento operatore è stato aggiunto per amplificare il tipo Tratti per 1.48.0, uscito nel novembre 2011.

non credo che nessuno li ha proposto per C++ 14 e ora è congelato. IMNSHO sarebbe bello se qualcuno lo proponesse per C++ 17.

4

Non so se questo è in argomento per S.O. (potrebbe essere più nei programmatori?) In ogni caso, Boost e ISO sono due cose molto diverse. Lo "standard" è ciò che la lingua "IS" e contiene ciò che è necessario per caratterizzare la lingua per QUALSIASI proposito. Boost è una libreria che "estende" la funzionalità a problemi specifici.

Il comitato Boost opera sulla "qualità" del codice (non sul suo oggetto), lo standard opera sullo "spread" (assumendo che la qualità sia data). Non tutto ciò che è "buono" è anche "comune". Che spinta fa lo standard quando si trova che è abbastanza comune. E non va "come ha fatto il boost". Si tratta di una specifica che il distributore di compilatori deve soddisfare.

Boost è scritto in modo che molti compilatori possono lavorare con esso. La libreria standard è scritta in un modo in cui il compilatore (o la famiglia di compilatori con cui va) gioca meglio con esso (e ci sono virtualmente un numero come la famiglia di compilatori può essere là fuori). Il tipo di ottimizzazione e l'eventuale tweaking di basso livello sono diversi.

Il fatto che alcune librerie di boost siano diventate parte dello standard non è una conseguenza automatica. È solo una questione di coincidenza di alcune "buone idee" che sono state trovate necessarie praticamente in qualsiasi codice.

Detto questo, il tuo intento non è necessariamente sbagliato: può accadere per il particolare argomento che hai chiesto. Ma non vi è alcun "progresso della migrazione" dall'aumento allo standard e nessun prerequisito standard che deve essere richiesto prima di aumentare.

+1

Potrei sbagliarmi, ma penso che il PO stia cercando se ci siano forse carenze specifiche nei tratti che il comitato degli standard ha deciso di non trasferire. –

+0

Sì, anche questo è possibile. Dipende da cosa tu e il tuo OP intendete con "* breve * termine". La transizione da C++ 11 a C++ 14 * breve * a entrambi? Se no, la mia risposta generica ha senso. Se sì, la risposta migliore a questo specifico argomento potrebbe venire. Buon punto! –

+0

Boost e ISO non sono _that_ diversi. C'è una sovrapposizione personale molto significativa. Vedi la prima riga di http://www.boost.org/community/ – MSalters

Problemi correlati