Modifica Tornando a questa domanda dopo qualche anno
Dopo aver continuato a utilizzare sempre più librerie di boost, ho pensato di aggiornare questa domanda per fornire un valido esempio del motivo per cui dovresti usare boost quando la descrizione del prodotto corrisponde alla funzionalità desiderata. Ciò convincerà anche chi dice male. Scarica openSSL, prova a creare un'applicazione client e server con esso. Ora prova a farlo funzionare su ogni piattaforma. Quindi, scarica e usa boost :: asio :: ssl per creare la stessa applicazione. Se non sei convinto che boost sia il posto giusto per cercare codice multipiattaforma pulito, ben ottimizzato, peer-review, questo semplice esercizio ti convertirà.
Versione Tl; dr:
Secondo me, non vedi un sacco di aziende di sviluppo indie o di piccole e medie dimensioni che usano il boost perché è una bestia selvaggia enorme e potente che non è facile da domare e sei praticamente da solo quando cerchi di imparare come per usarlo. La documentazione è carente in alcuni modi (vedi versione lunga) e "la comunità" attorno al progetto sembra mancare, sparpagliata o inattiva (rispetto ad altri progetti).
Versione molto lunga:
mi rendo conto che esiste già una risposta accettata, ma come qualcuno che utilizza effettivamente il boost in quasi tutti i progetti che faccio, ho pensato di pubblicare una risposta.
Ricordo quando per la prima volta mi sono dato da fare per dare una spinta e onestamente non avevo idea di cosa stesse succedendo. Boost non è affatto ben documentato. Le persone potrebbero non essere d'accordo con me sul fatto che sono sicuro perché ci sono tonnellate di frammenti di codice di esempio e commenti e simili, ma è tutto molto freddo e vago oltre che difficile da navigare.
Inoltre sembra difficile trovare un posto in cui ti senti come se avessi trovato "la comunità" attorno al progetto. In effetti la comunità sembra inesistente o nomade. Sfortunatamente anche la loro mailing list è stata trollata da così tanti siti di sanguisughe che puoi andare in questa tana del coniglio sempre tornando indietro da dove hai iniziato.
Questi due fattori rendono l'apprendimento dell'uso delle librerie boost un compito piuttosto scoraggiante. Anche se i tecnicismi dell'utilizzo di boost non sono eccessivamente complessi, si tratta di un enorme set di librerie e di fissarlo quando tutto ciò che ti è armato è qualche frammento di codice e pezzi sparsi della mailing list dagli angoli più bui di Internet ... bene hai capito.
Ho iniziato a armeggiare con una spinta intorno alla versione 1.45 ed è solo ora nella versione 1.52 / 1.53 che mi sento abbastanza a mio agio da usarlo in produzione. Ci sono così tante cose a cui abituarsi e ricordare, anche cose semplici come come hai configurato boost e ricordare quella configurazione, perché il modo in cui le librerie sono costruite e le funzioni possono variare selvaggiamente in base alle tue preferenze al momento della compilazione a causa di come le cose personalizzabili siamo.
Tuttavia , non commettere errori , una volta che puoi esercitare un potenziamento, hai guadagnato un'arma potente per costruire rapidamente solidi programmi multipiattaforma. Prendi solo boost::asio
per esempio. Puoi scrivere un web server asincrono estremamente potente, scalabile e solido come una roccia in sole duecento righe. Nel corso degli anni ho scritto più client, server, proxy ecc. Con solo poche centinaia di righe di codice ognuna che non mi hanno ancora deluso e possono portarle da una piattaforma all'altra in pochi minuti.
Come altri hanno sottolineato, le aziende più grandi di solito sono bloccate con roba legacy o piace rotolare le proprie che capisco perfettamente. C'è anche questa cosa davvero sciocca di cui ho sentito parlare e che ho incontrato in cui i lead di sviluppo e oi project manager proibiscono di usare boost perché è "troppo grande". La mia ipotesi è che credano che boost sia 1 singola libreria o che non abbiano mai sentito parlare di BCP .
Per quanto riguarda il PERCHÉ ho scelto di utilizzare boost
Direi che lo uso perché, come insinui nella tua domanda, è "la" libreria C ++. Boost è visto nel mondo C ++ come il coltellino svizzero di cose che alla fine dovrai usare. Quindi l'idea è che se ce n'è bisogno, dovrebbe esserci una versione altamente performante e portatile di essa in spinta. Le grandi aziende contribuiscono a dare impulso , le persone molto istruite con curriculum impressionanti contribuiscono e lo mantengono , e quando viene sviluppato un nuovo standard di C ++, le persone di solito cercano di migliorare per vedere quali parti dovrebbero diventare C ++ standardizzate ISO.
Quindi, se devo aggiungere alcune funzionalità per cui esiste probabilmente una libreria esistente, il primo posto che cercherò è boost solo perché sono abbastanza sicuro nelle scommesse che è abbastanza ben ottimizzato, portatile, sarà supportato e mantenuto per molto tempo e verranno individuati e risolti i bug. Nel mondo open source quelle qualità possono essere molto difficili da trovare.