share
Stack OverflowWhat is Boost missing?
[+172] [60] Robert Gould
[2008-12-17 10:13:56]
[ c++ boost ]
[ http://stackoverflow.com/questions/374147/what-is-boost-missing ] [DELETED]

After spending most of my waking time on Stack Overflow, for better or for worse, I've come to notice how 99% of the C++ questions are answered with "use boost::wealreadysolvedyourproblem", but there must definitely be a few areas Boost doesn't cover, but would be better if it did.

So what features is Boost missing?

I'll start by saying:


PS: The purpose is to compile a reasonable list, and hopefully Boost-like solutions out there that aren't yet a part of Boost, so no silly stuff like boost::turkey please.

(30) Mm, boost::turkey. - Andrew Coleson
(13) I want boost::schnitzel! - Bombe
What's the purpose though? Do you propose to make any of these libraries? Fairly pointless question otherwise, isn't it? - jalf
(1) @jalf PS: The purpose is to compile a reasonable list, and hopefully boost-like solutions out there - Robert Gould
(49) boost::santa, provides all the best features you ever wanted, but only if you've been good. - gbjbaanb
Would not the appropriate place for this list by on the boost forums? - Loki Astari
@Martin York, no not really, because if you've noticed the purpose is to provide links to non-boost solutions, because boost can't do everything (unfortunately), this way it serves as a repository of non-boost C++ solutions for common developer needs, not for boost library programmers. - Robert Gould
(17) If a reasonable list is compiled here, it could always be moved to the boost forum. No reason not to talk about it here. Good question. - Bill the Lizard
(3) I don't know if anyone pays any attention to it it, but there's: svn.boost.org/trac/boost/wiki/… - Daniel James
SOCI looks cool. - j_random_hacker
(14) boost::my_salary :) - Eduardo León
(1) Come to think of it, the boost::wealreadysolvedyourproblem you mentioned sounds pretty good, actually. My vote goes to that. ;) - jalf
(1) boost tries to be a general-purpose library; I don't think there is a place for stuff like SQL, JSON and audio. - Thomas
@Thomas: Not sure if I agree with that. Some of those are at least as widely used as asynchronous IO, state machines, parser frameworks or libraries for interfacing with interpreted languages, and all of those exist in Boost. Why is a Boost.Python more "general purpose" than Bost.JSON? Why is Boost.Spirit more general purpose than Boost.Sql? - jalf
Neither of those belong in Boost, IMHO. See also Catskul's answer, below. - Thomas
@"boost::santa" - but only once a year, until you are 14. - peterchen
(1) A kitchen sink. - Alex Budovski
boost::eval(); Both MATLAB and Actionscript have eval() functions which are dangerous if you use them incorrectly, but can give you dynamic variables and other cool features: mathworks.com/support/tech-notes/1100/1103.html - Nav
If you include everything, you might start to look like Java. (I am not saying that's a good thing ;) - Peter Lawrey
What's fantastic, is that reading through the majority of top answers, there's a comment at the bottom which states "See Boost.Whatever" - new123456
I guess boost.json is quite well covered by boost.propertytree :) - Christoph Heindl
boost::dwim — that would render all other libraries redundant. :-) - celtschk
[+137] [2009-01-07 20:02:45] Bklyn

A boost::log library is my vote. For logging messages, not logarithms, silly.


(6) That is uncanny. Now that you've mentioned it its utterly absurd that there is no boost::log! - Robert Gould
There was (is?) a proposed one. It's not made it through yet though. Not sure how likely it is to make it into the mainline Boost library, but you can go look it up if you like. A problem with logging is that everyone wants to do it differently! - John Zwinck
(3) There were multiple proposals, and I agree that its a bit of a bikeshed. - Bklyn
+1 for the Exclamation Point factor. Every "real" project I've worked on spouts logs--always using ad hoc code for the project. "Everyone" uses logging, it should definitely be there. - chaosTechnician
(20) See the already accepted Boost.Log (svn.boost.org/trac/boost/wiki/…) - Vicente Botet Escriba
I am very much into "shout" logging, i.e. you do not need to carry a logger around with you when you want to log something. Instead you first shout your "context" and get back whether any loggers is listening and if so you create the log message and send it, and the actual logging is asynchronous. One singleton that handles the shouting and loggers subscribe to context. - CashCow
1
[+107] [2008-12-17 10:38:40] Paulius

Well, I don't keep my expectations high, but boost::callstack would be nice (or maybe it should be boost::debug::callstack). I mean, on most platforms (compilers) the callstack info could be easily retrieved - it would be nice to have one api, that would work on all platforms.


2
[+97] [2008-12-17 15:47:37] Ferruccio

a boost::archive to directly manipulate .zip, .tar, .rar, etc. files would be useful.


I think that would be great...however there's lots of patent issues with that and there are already libraries that do a lot of it too. - teeks99
(2) Its not exactly what you ask for, but currently the iostreams library can gunzip files. - haggai_e
Upvote 1 000 000 000 times! - topright gamedev
3
[+72] [2008-12-17 10:44:52] Anteru

boost::stl, seriously, something along the lines of the EASTL [1]. A fast, efficient STL implementation which gets rid of the legacy problems. There has been some discussion at the Boost mailing list about new IOStreams, which would be byte oriented (and not character oriented!), things like that should really be done.

Besides that, it would be nice if a XML library like TinyXML [2] would get into Boost. And give me a good string library which works by default with UTF-8 strings.

Finally, concurrency stuff in spirit of the TBB [3]. We already see GCC implementing parallel_for ( parallel mode [4]), Microsoft is coming next -- obviously, this is something that should get standardized.

[1] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html
[2] http://www.grinninglizard.com/tinyxml/
[3] http://www.threadingbuildingblocks.org/
[4] http://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html

for UTF-8 i like IBM's ICU library, although it could be more modern C++ like (icu-project.org) - Robert Gould
Yeah, I know about it -- I'd have no problem if it would be included in Boost. The point is, Boost (and C++ itself) seriously lacks a modern string library. - Anteru
boost has delibrately not provided functionality that duplicates the STL. It has only added stuff that extends the STL. - Loki Astari
They have new style iterators, so why not new style containers? - Anteru
(3) Agreed, they also have intrusive containers, so there is no reason they couldn't have EASTL like containers for high performance - Robert Gould
+1 for Intel TBB. - Macke
(2) Oh, thank God! I'm glad to hear I'm not the only one who abhors the "character" oriented streams of C++. I've been wanting to write a better streams implementation for a while - something that understands what "byte" is and what a "character"/"text" is, and why they aren't the same. If I ever do, perhaps I should submit to boost... - Thanatos
4
[+67] [2008-12-17 10:21:39] yesraaj

boost::gui would be a nice addition.


I'm pretty sure, that something like John Torjo's eGUI will become boost::gui someday. Of course, there might be other candidates as well. :) - Paulius
(1) I doubt boost will include platform-specific libraries any time soon, Paulius. - gnud
(9) Well actually a good GUI library would separate input, control and rendering. So input and rendering are platform dependent plug-ins, fairly easy to implement, and the controlling and event handling is generic. Many professional game-oriented libraries do exactly this, so it could be done IMHO. - Robert Gould
(9) I have serious doubts that an useful GUI library will ever get into Boost (or C++). After all, C++ is known for its portability, and I can't imagine a GUI which scales from let's say Mac OS X down to a game boy. - Anteru
Have a look at Adobe's Adam & Eve: stlab.adobe.com/index.html - Luc Hermitte
Adam and Eve do seem very promissing considering Adobe has already contributed libraries to boost before. Kind of exciting actually! - Robert Gould
(3) Don't think GUI code will, or should, go into Boost. In writing GUI's everybody wants to do something unique or special at least in one point in time. Also a consistent and extensible interface handling all of the different GUI's would be far larger than the current Boost library. - Daemin
(1) boostGL and associated widget libraries, well, why not. An alternative would be something like WTL, but ported to other platforms. - gbjbaanb
I really think a light weight platform independent GUI toolkit would be great. Not as a replacement for the larger GUI toolkits but as an easy way of getting some images and buttons on the screen. I've done this with glut some times now, and a c++-lib with some widgets would be a much better. - Laserallan
(16) I really don't want a boost::gui. It's either going to need to be the size and complexity of Qt+WPF+OpenGL to do everything - or it's going to be so Tcl/TK primitive as to be useless. Or most likely it will be incredibly adaptable and theme-able to do everything but so insanely complex no one can use it. - Martin Beckett
(1) I think that's completely beyond the scope of boost. Boost shouldn't be everything, just work with everything. - peterchen
5
[+50] [2008-12-17 10:56:56] Lazin

boost::concurency, like mentioned above, may contain lock free data structures, atomic operations, different usermode synchronization objects(spin locks) and so on.


(1) You should check out Intel's TBB (threadingbuildingblocks.org) It's boost-like C++ and its platform independant - Robert Gould
Good advice, but i alredy use it. Many other boost parts(like boost signals) can be implemented thread safe or even lock free if such library will be the part of boost library. - Lazin
that would be sweet actually. - Robert Gould
boost::signals2 is in fact thread safe - grepsedawk
@Vicente: Just a heads-up: if you don't put the link in angle brackets, it will get hyperlinked correctly, e.g., svn.boost.org/trac/boost/wiki/… - James McNellis
See (svn.boost.org/trac/boost/wiki/…) for a list of concurrent programming - Vicente Botet Escriba
6
[+43] [2008-12-17 11:15:59] Rob

Is there a boost::xml? If not then TinyXML should be adopted. :)


or TinyXML++ (TICPP, code.google.com/p/ticpp) - Kasprzol
Yes, TICPP would be ideal. - Rob
I think there is a boost::xml in the sandbox. - Ferruccio
(1) There is a boost::xml in the sandbox and it's very good. We use TinyXML++ (which is decent) here but boost::xml was preferred; it was just too likely to change. - MattyT
The syntax for boost::xml is horrible - Martin Beckett
See (svn.boost.org/trac/boost/wiki/…) - Vicente Botet Escriba
boost::serialization can export/import xml. - topright gamedev
boost::property_tree - Nick Strupat
boost::property_tree uses RapidXML as the low level parser. - TomA
7
[+39] [2008-12-17 16:06:05] teeks99

How about a good arbitrary precision float (or int) data type. Sometimes you want to carry around a number with super high precision (like calculating pi).


(6) And how about a fixed point decimal to go with that? - Bklyn
(6) My fixed point class (codef00.com/projects/Fixed.h) was submitted for consideration in boost by someone, but nothing came of it :(. I guess there aren't enough of us that want it. - Evan Teran
@Evan: very nice - Bklyn
8
[+30] [2010-06-09 20:35:13] kriss

I would like much some boost::gpu to abstract call to layers like cuda or openCL with nice syntaxic sugar. I can't believe software vendors are actually providing their own compilers (nvcc for cuda) for that purpose.


9
[+29] [2008-12-17 12:49:52] teeks99

Cross-Platform, high performance timing. The microsecond timer doesn't work on windows (it will not throw errors, but is highly discontinuous).


Timing has always been weird and tricky to execute. Though now if you lock the timer thread to one processor and use the QueryPerformance functions it works well. - Daemin
(5) See Boost.Chrono (svn.boost.org/trac/boost/wiki/…) - Vicente Botet Escriba
10
[+27] [2008-12-17 13:07:40] Ferruccio

I'd like to see more high-level language interfaces like the existing boost::python.

boost::ruby maybe?


I like that idea - Robert Gould
(24) Actually, if that's even possible, I'd prefer boost::scripting as a common interface, and then specific implementations: boost::scripting::python, boost::scripting::ruby, boost::scripting::lua, boost::scripting::angel_script and so on. - Paulius
That would be an interesting idea, sort of (I don't know if it was Steve Yegge who said it) like a means for different languages to share libraries / communicate with. Though I think I'm taking the scope of this a little far. - Daemin
You might be interested in this project: rice.rubyforge.org (Ruby Interface for C++ Extensions) It is very similar to boost.python. - grepsedawk
(2) boost::langbinding (boostpro.com/writing/oopsla04.html) was proposed back in '04 but needs funding. It could be used to (re-)implement specific language bindings like Python, Lua, Perl, etc. Yum! - Bklyn
Use Robin for Python/C++ coupling. - Avihu Turzion
@Paulius et al: That is such a good idea! - Kaz Dragon
11
[+22] [2009-10-15 18:00:47] Catskul

From what I can tell boost stays away from specific standards. Whereas you might expect that it could have a DOM library, it might not be specific to XML or JSON.

Anything touching hardware would be right out. Anything touching specific standards is out. Anything platform specific is out (unless it can clearly be made to be non-specific). Anything requiring other libraries is out.

You dont find boost gzip or boost png, because again too specific. Nor audio or GUI stuff because they touch hardware/platform/other libs.

Basically anything that could be a moving target is out.

Good candidates for boost libs would be very generic concepts that can be improved until there is no reason to modify it again except to fix bugs.


This needs more upvotes. Boost shouldn't be the "library of everything". That would drag in far, far too many dependencies and problems, and bloat the library too much. - Thomas
See (svn.boost.org/trac/boost/wiki/…) - Vicente Botet Escriba
12
[+21] [2009-01-27 12:51:12] Laserallan

Boost RPC.

Something that connects the boost network/IPC-functionality with the serialization features to make it possible to call functions on processes remotely in some fancy type safe way.

It should preferably be cross platform (no endian problems), floating point compatible, and string encoding agnostic.


Actually this is a VERY big task .. i think this would require the existence of lots of currently not existing boost libraries aswell... - smerlin
(4) See Boost.RPC (svn.boost.org/trac/boost/wiki/…) - Vicente Botet Escriba
See RCF by DeltaVSoftware - Zach Saw
13
[+21] [2009-03-26 18:40:50] Larry Gritz

boost::atomic


yeah this would help - Robert Gould
(5) Or at least a wrapper and documentation for the existing implementations! boost::smart_ptr and boost::thread have their own atomic implementations in their respective details. The (not accepted yet) boost::lockfree library has another implementation. :o - sstock
(1) atomic is improved a lot in the new C++ standard so this might be redundant - Martin Beckett
(2) See Boost.Atomic (svn.boost.org/trac/boost/wiki/…) - Vicente Botet Escriba
14
[+18] [2008-12-17 22:50:51] teeks99

A thread pool.


boost::threadpool does actually exist :) threadpool.sourceforge.net/index.html - Robert Gould
But its not an official part of boost. - Bklyn
It isn't? Its right there inside Boost, so it seems official enough to me, but I might be wrong. - Robert Gould
Where? I see none under boost.org/doc/libs/1_37_0/doc/html/thread.html threadpool.sourceforge.net is not part of boost proper. - Bklyn
boost thread group? - Mykola Golubyev
AFAIK that threadpool is not official boost, worse still when I tried it a few months ago it suffered from a number of deadlock problems. - Adam Bowen
Boost asio essentially gives you threadpool. - Joseph Garvin
(6) See (svn.boost.org/trac/boost/wiki/…) - Vicente Botet Escriba
15
[+16] [2009-10-21 20:32:51] navigator

boost::encoding would be nice. A library to be able to convert between different character encodings.


(5) Boost.Unicode: Aims at providing the foundation tools to accurately represent and deal with natural text in C++ in a portable and robust manner, so as to allow internationalized applications, by implementing parts of the Unicode Standard. (see (svn.boost.org/trac/boost/wiki/…;) - Vicente Botet Escriba
(3) This is already included as part of C++03. It's provided by the std::codecvt facet of the locale library. - Billy ONeal
(2) Take a look on Boost.Locale it is a part of it - Artyom
16
[+14] [2009-05-13 15:57:36] Laserallan

A checksum/hashing library. The CRC-library is nice, but md5 or sha would be useful as well.


(4) Or even a crypto library - something like Keyczar - Martin Beckett
17
[+11] [2008-12-17 14:47:35] Robert Gould

boost::os to query and interact with the machines enviroment, settings and performance info in a standardized C++ fashion. And it would probably provide other c-posix capabilities missing from C++.

Also boost::url would be nice (probably a cUrl wrapper)


(2) You should split the boost::url into another answer. That way it is easier to see which suggestions are more popular. - Paulius
no thank you. Certainly not wrapping cURL. And maybe it will include caching. Hey why not get boost to do exactly what I am going to be doing in my projects and put me out of work. I'd be happy if they stick with standardising the libraries. - CashCow
18
[+10] [2009-09-12 23:38:14] Eduardo León

boost::coroutines

Why not have a call tree or even a call graph instead of a dull call stack?


(1) There is some work being done on that: crystalclearsoftware.com/soc/coroutine - Ferruccio
See (svn.boost.org/trac/boost/wiki/…) for a list of concurrent programming, and in particular the proposed Boost Fiber (svn.boost.org/trac/boost/wiki/…) - Vicente Botet Escriba
19
[+10] [2010-09-10 20:38:41] Joe D

boost::extensions for adding scripting support to your application. You'd have boost::extensions::scheme, boost::extensions::python, boost::extensions::ruby and boost::extensions::lua etc.

Kind of like guile.


There is a Boost Langbinding project, but I beleive it is not currently active. boostpro.com/writing/oopsla04.html - Éric Malenfant
20
[+8] [2008-12-17 10:24:39] grepsedawk

Fixed size strings.


What do you mean? An immutable string system? - Robert Gould
I think he means strings with a fixed-sized buffer. The strings could be any size up to the buffer limit. - Ferruccio
so, not like a stl::string that's had reserve() called on it, but a c-string wrapper? I can see use in the latter. - gbjbaanb
I interpret this request like I prefer: strings with a program specified maximum size - so something like string s; cin >> s; can not fill all your virtual memory and bandwidth. - jdkoftinoff
21
[+8] [2009-08-03 05:21:07] hackworks

How about Boost::MQ. A message queue to augment Boost::ASIO


Yeah a fine tuned and reliable MessageQueue would be nice, can't count the times I've had to implement one myself - Robert Gould
That is based on shared memory and works only between processes on a single machine. For distributed programming, I would like to have something based on TCPIP (or something that can use FC like infiniband) - hackworks
I don't think Unix MQueue can be used in distributed programming. - Vicente Botet Escriba
22
[+8] [2010-01-13 13:27:35] Kaz Dragon

Boost.Unicode. Unicode is such a core component in many technologies desired above/below*: XML, GUIs, etc. Its existence would provide a much needed stepping stone.

*delete as appropriate.


Look for Boost.Locale - Artyom
Boost.Unicode: Aims at providing the foundation tools to accurately represent and deal with natural text in C++ in a portable and robust manner, so as to allow internationalized applications, by implementing parts of the Unicode Standard. (see (svn.boost.org/trac/boost/wiki/…;) - Vicente Botet Escriba
@Artyom and Vicente: it's not me particularly that needs this library. What I see is that Boost most needs this library in order to enable development in further areas that keep cropping up. But thanks for pointing out these particulars should I ever need them. - Kaz Dragon
23
[+8] [2010-04-27 21:56:56] KillianDS

boost::cryptography, including a wide set of security related algorithms, similar to Crypto++. As I often write networked applications that need different kinds of security on application level, I would love this feature to be present in boost. There are some libs around (I mostly use crpyto++) but having it clearly licensed in the boost library would be very helpful.


(4) See Boost.Crypto (svn.boost.org/trac/boost/wiki/…) - Vicente Botet Escriba
24
[+7] [2010-01-13 13:14:29] Matthieu M.

I would definitely be interested in a Boost.Sql library.

However, I think to really be interesting, one should up the bar (in term of interface) from the SOCI interface you mentioned.

Here is the kind of thing I'd like to write:

DEFINE_TABLE(
  myTable,
  ((id, Int, NotNull))
  ((name, VarChar2<56>, NotNull))
  ((firstName, VarChar2<64>, Null)),
  (PrimaryKey)(id)(name)
);

And then:

auto aQuery = Select(myTable.id, myTable.name).From(myTable).Where(myTable.firstName != Null);

auto aCursor = Cursor(aQuery);

std::list< std::pair<int,std::string> > aList;
while(aCursor.fetch())
{
  aList.insert(std::make_pair(aCursor.get(myTable.id), aCursor.get(myTable.name)));
}

I am definitely waiting for the auto keyword of course, since this implies a high degree of template meta-programming, but I do love DSELs and compile-time checking of the validity of a sql request with "natural" syntax would be a huge boon!


Mmm, that's quite an interesting API. Never seen something like it except for the boost::assign libraries of Thorsten Ottosen. not sure it can be implemented exactly as you propose, but is a nice source of inspiration. I'll try to design my next library (of what I have no idea) to look something like that, just for the fun of it. - Robert Gould
Well, actually I already have quite a similar thing working, so I doubt it would be a challenge for a Boost coder :) The only problem is that without auto it's difficult because of the types generated :/ - Matthieu M.
See (svn.boost.org/trac/boost/wiki/…) for a list of related libraries - Vicente Botet Escriba
Thanks @Vicente, I just had a look at Boost.rdb and its interface is very promising. I have only read about sql query formatting, don't know if it does much more, and it doesn't look like it uses parameterized sql when the parameters are known at compile time (which is a shame I think), but it's a really good piece of work imho :) - Matthieu M.
25
[+7] [2010-04-27 21:38:51] Vicente Botet Escriba

I hope you will find this link Libraries Under Construction [1] useful.

Please let me know if you want I add some wish libraries to it by adding a comment to this answer, or posting on the Boost ML.

[1] http://svn.boost.org/trac/boost/wiki/LibrariesUnderConstruction

Hmmmm, Firefox doesn't want me to use that link. AFAICT, Boost uses a self-signed certificate for https, and Firefox is getting even nastier about those. Do they get kickbacks from certificate authorities or something? - David Thornley
26
[+7] [2010-12-17 13:58:59] axilmar

boost::gc is one thing missing from it.

It could have the following classes and functions:

gc_ptr<T>: garbage-collected pointer.

gc_base<T>: garbage-collected base class.

gc<T>: garbage-collected wrapper class.

gc_collect(): collect garbage manually.

Using it would be like this:

gc_ptr<int> data = new gc<int>[100];
class foo : public gc_base<foo> {};
gc_ptr<foo> foo1 = new foo;

The implementation would be free to choose between Boehm's gc or a map-based implementation.


Isn't the gc_ptr you're asking for called shared_ptr? :))) - Armen Tsirunyan
The namespace gc will contain tracing garbage collection algorithms: either Boehm's gc or a custom gc which registers/unregisters pointers and memory blocks using a memory map. - axilmar
27
[+6] [2009-12-17 15:08:12] Alexandre Jasmin

I'd like to see something like the SafeInt [1] library in boost.

It can catch integer overflow and casting problems at runtime.

[1] http://channel9.msdn.com/shows/Going+Deep/David-LeBlanc-Inside-SafeInt/

See (svn.boost.org/trac/boost/wiki/…;) - Vicente Botet Escriba
I'm surprised this only had +3. Integer overflowing is a classic security problem that almost every programmer has to deal with. - Timothy003
28
[+5] [2010-05-02 09:36:50] Vicente Botet Escriba

A logic programming library including unification and backtracking.


29
[+5] [2010-06-09 20:42:20] kriss

config files support with reading and writing

I used boost:program_options to read config files and there is some unkept promises. My point is that boost::po supports a kind of unification between command line option and config files parsers, but for config files what is available fall short : only one supported format similar to old windows ini files.

But my biggest regret is definitely that boost::po has not the slighlest hint of a write support for config files.


(3) Try boost::property_tree. - Jonathan Sternberg
30
[+4] [2009-03-26 17:26:35] phaedrus

boost::artificial_intelligence


I'm not so sure that AI is a good candidate for a general purpose library. Yes, there are many general AI techniques, but they must be well tailored to fit your problem. - Scottie T
boost::state_machine and boost::graph exist, thats applicable to AI. a boost::genetic_algorithm and boost::ann, could be nice - Robert Gould
(2) @Scottie Modern C++ has an advantage of configurability, which can be exploited well for AI. Some general purpose libraries I can think of are: constraint programming, propositional logic, resolution, uncertainty models and so on. The application domains would be gaming, and systems. - phaedrus
(2) Something tells me this poster was kidding. - Kevin
@kevin Not quite. Indeed java folks are working on Mahout machine learning library. Would be exciting if C++ AI algorithms are used, for example in gaming. - phaedrus
-1 this could not be a library - Vicente Botet Escriba
@Vicente Agree that AI is too big to be a single library (and that makes me partially agree to Kevin's comment above; I posted this more than one year back). However I still believe there are good reasons for general purpose libraries such as the ones I have listed in my earlier comments within this answer. - phaedrus
31
[+4] [2010-05-06 12:47:39] missingfaktor

boost::persistent_collections ⇒ A Persistent Collections Library.


32
[+4] [2010-06-09 21:08:15] gbjbaanb

How about Boost::Network for items like SMTP, FTP, HTTP protocol handlers etc.


33
[+4] [2010-06-17 18:36:39] Emile Cormier

boost::unique_ptr. The one in Boost.Interprocess needs to put into Boost.SmartPtr so that anyone may use it (without having to depend on Interprocess).


34
[+3] [2010-05-02 13:16:37] Vicente Botet Escriba

Boost.Singleton


My experience: Wizards don't use singletons. Beginners use them wrongly. - phresnel
35
[+3] [2010-11-05 15:16:21] Mat

I would also like to see a boost::tree which may even be a subset of the Boost Graph Library. There has been at least one Stack Overflow [1] question about C++ tree implementations and apparently a proposal [2] for boost::tree existed a couple of years ago but I guess it died out. From the Stack Overflow question, the lack of a "good" one-size-fits-all approach disqualifies it from being incorporated into Boost; a good deal of free third party implementations exist too.

From reading other answers, about XML and JSON, I believe a similar approach could be adopted. Instead of boost::xml/boost::json you would have a boost::dom that could be configured to read XML or JSON. Instead of boost::quadtree or boost::octtree you would have a boost::tree that could be configured to manipulate one or the other. That's highly simplified so I wonder if it's practical.

[1] http://stackoverflow.com/questions/205945/why-does-the-c-stl-not-provide-any-tree-containers
[2] http://archives.free.net.ph/message/20080217.210634.0b812764.en.html

Do you know about "PropertyTree" (boost.org/doc/libs/1_41_0/doc/html/property_tree.html). Maybe not a fully generic "tree", but it is suitable for representing XML and JSON. In fact, it includes JSON and XML parsers. - Éric Malenfant
I did not know about PropertyTree - that definitely solves some problems for me, thanks! I really used the XML/JSON example as an analogy for how the more generic tree class might behave. I wonder if this is what the boost::tree proposal turned into? The website for PropertyTree says: "Many software projects develop a similar tool at some point of their lifetime..." Guilty! - Mat
36
[+2] [2009-08-03 06:33:04] Hooked

Boost::time

I hate the cstdlib time.h, simply because it makes me hack out how long my program is taking.


(12) boost::date_time exists! boost.org/doc/libs/1_39_0/doc/html/date_time.html - teeks99
(1) fml, thank you. - Hooked
(2) See Boost.Chrono (svn.boost.org/trac/boost/wiki/…) - Vicente Botet Escriba
37
[+2] [2010-01-26 16:03:33] mloskot

Regarding boost::sql proposal, there is some work in progress:

[1] http://www.boostcon.com
[2] http://www.boostcon.com/program/previous/2009
[3] http://www.boostcon.com/site-media/var/sphene/sphwiki/attachment/2009/05/12/std_rdb.tgz
[4] http://mail-lists.crystalclearsoftware.com/listinfo.cgi/std_rdb-crystalclearsoftware.com
[5] http://soci.sourceforge.net

38
[+2] [2010-05-02 09:41:50] Vicente Botet Escriba

Arrays indexed by enums


boost::unordered_map<enum, T> - Ferruccio
39
[+2] [2010-05-02 13:23:44] Vicente Botet Escriba

Unique identifier : Use to create unique identifiers for example in database tables, network messages session identifiers, transactions identifiers.


you may be interested in the Tokenmap proposal for inclusion into Boost: svn.boost.org/svn/boost/sandbox/tokenmap/libs/tokenmap/doc/html/… . It's not a solution for generating persistent unique identifiers (that may be saved in databases), but for things like session, network, and transaction IDs, it would work really well. - Daniel Trebbien
@Daniel Thanks, I'll take a look and add it to the Boost Libraries Under construction (I missed it :() - Vicente Botet Escriba
40
[+2] [2010-06-18 02:00:31] lurscher

regarding boost::sql there is Wt dbo [1] although it is more like hibernate

[1] http://webtoolkit.eu/wt#/blog/2009/11/26/wt__dbo__an_orm__c___style

41
[+1] [2009-10-18 04:09:30] cdiggins

boost::reflection, boost::eval, boost::emit, and boost::compile.


(3) I really don't think those are feasible with the C++ programming model. Boost type_traits give you some compile-time reflection capabilities and the rest would require a full-blown C++ compiler at run-time. By the time you were done, you would have reinvented Java/C#. - Ferruccio
See (svn.boost.org/trac/boost/wiki/…) for a list of libraries related to reflection - Vicente Botet Escriba
42
[+1] [2010-05-02 09:39:32] Vicente Botet Escriba

The scoped_guard as included on the detail directory of Boost.MultiIndex


43
[+1] [2010-05-02 09:40:58] Vicente Botet Escriba

Boost.Persistent able to manage with objects stored on a persistent storage


44
[+1] [2010-05-03 11:35:41] Vicente Botet Escriba

Boost.Tree: divers tree implementations and hierarchical iteration


45
[+1] [2010-08-30 13:28:13] rursw1
  1. WS-I (SOAP based web services) support.
  2. How about image/ voice processing?

46
[+1] [2011-08-15 00:09:41] Aditya Kumar

well, i need the following:

  1. boost::make, or boost::system something like that. which should provide facilities to call system commands, captures the shell output, gets the return values etc... using APIs to be used inside a C++ program. so that i can get rid of scripting language whenever i choose to. May be they can extend the boost::program_options to take care of this.

  2. boost::graph needs some improvement on interface level. it takes a while to learn BGL. why? because the functions that it provides are not too easy to use in the first place.


47
[0] [2010-05-02 09:37:55] Vicente Botet Escriba

ObjectRole a library that helps to implement the Object Role pattern.


48
[0] [2010-05-02 09:43:07] Vicente Botet Escriba

EnumSet similar to bitset but with enum indexes.


49
[0] [2010-05-02 09:44:21] Vicente Botet Escriba

Boost.Quartet Quartet are half an octet, i.e. 4 bits taking values from 0..15, and usually represented by chars '0'-'9' 'A'-'F'. There are some container specializations as std::string, std::vector and boost::array that could be of interest to some applications. They are also used when a decimal number is encoded using the BCD format (binary coded decimal) or to encode telephone numbers.


50
[0] [2010-05-02 13:18:46] Vicente Botet Escriba

Boost.BloomFilters [1]

[1] https://svn.boost.org/trac/boost/wiki/LibrariesUnderConstruction#Boost.BloomFilters

51
[0] [2010-05-02 13:25:40] Vicente Botet Escriba

Monotonic allocators.


52
[0] [2010-05-03 11:26:35] Vicente Botet Escriba

Formatted container output: Simple and uniform display mechanism for arbitrary ordered lists


I have written a 'tiny' library for this purpose: bitbucket.org/AraK/streamer - AraK
53
[0] [2010-10-22 14:05:22] plan9assembler

boost::video : sort of like directshow/vmr


54
[0] [2011-08-05 18:26:20] sim642

Why boost::json if Boost.Property_tree already can do it?

Property trees can be created from JSON, XML and INI.

Also boost::sql could be really useful if it worked with many different SQL engines(?) like MySql, PostgreSQL and even Sqlite. You could easily modify the database location with a simple line modification.


55
[0] [2011-10-19 11:28:55] ardhitama

It's hard but I think possible, boost::location


56
[0] [2011-12-07 11:06:58] linello

boost::avl

a library for self-balancing binary search tree, modeled around boost::graph


57
[0] [2012-03-31 19:02:10] authchir

Boost.TUI (Text User Interface)

A portable interface to construct text base user interfaces.


58
[0] [2012-04-07 10:38:10] ddriver

boost::graphics

I've seen a suggestion on GUI which is arguably adequate, but I think a really good addition to boost would be low level graphics, rasterization, primitives, paths, gradients, fonts as well as surface/canvas to use the graphics on, blending, blitting... all those can naturally be platform independent.

Recently boost included GIL - the generic image library, so I think low level, platform independent 2d graphics will contribute a lot to boost.


59
[-6] [2010-10-19 12:19:02] topright gamedev

boost::magic_button

You simply add a magic button to your program, and it does everything.


(19) I didn't expect that button to downvote my answer! - topright gamedev
60