Slashdot Mirror


Boost 1.36 Released

AndrewStephens writes "Good news for C++ programmers: Boost 1.36 has been released with 4 new libraries (including very useful exception templates) and a host of updates. In particular, boost.asio (the cross platform AsyncIO library) has seen major additions and now supports asynchronous disk operations on Windows. Almost every modern C++ codebase uses Boost somewhere, and many of its features find their way into the official language specifications."

40 of 166 comments (clear)

  1. Really appreciate it by amrik98 · · Score: 2, Interesting

    Boost made one of my cross-platform projects extremely easy to write; wrapping network functions to account for differences between Windows and Linux was not fun.

    1. Re:Really appreciate it by j00r0m4nc3r · · Score: 3, Insightful

      Easy to write? Yes. How about maintain? Every instance I've encountered Boost has been a nightmare. Boost tends to encourage the template swamp, that miserable wretched pile of crap which you end up with when people overuse templates and fail to properly comment their code. You can end up with some serious convoluted shit pretty easily with Boost. Eventually you learn it and can decipher it, but that means that every single person on the team, and all newcomers need to waste time getting up to speed on a single 3rd party library. 99% of the time people use Boost for things they really shouldn't just because it's there. It also tends to encourage over-engineering of systems because of the multitude of complex tools available. It's not to say that Boost isn't nice or has it's uses, but people should be very cautious in how they use it.

    2. Re:Really appreciate it by immcintosh · · Score: 2, Funny

      Programmer with new hammer sees lots of nails.

      - News at 11

  2. Use of Boost? by Anonymous+Brave+Guy · · Score: 3, Insightful

    Almost every modern C++ codebase uses Boost somewhere

    [Citation needed]

    Boost is created and used by a highly vocal minority of C++ supergeeks. You can play with the definition of "modern", but it's only been in the recent past that Boost even compiled on more than the bleeding edge platforms. Most of the C++ projects I've worked on professionally are still worrying about whether to allow non-trivial use of templates or how to avoid screwing up exceptions, never mind trying to fight through the mess that is getting Boost installed and running these days and spending time getting lawyers to review the licensing terms.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    1. Re:Use of Boost? by eddy · · Score: 3, Informative

      While I agree that it's a bit pissy to imply that if you're not using boost in your c++ project, you're not 'modern', neither installation nor license ought to be much of an issue. The license is as clear cut as it can be:

      Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:

      The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.

      C'mon, that ought to be pretty straight forward, even for a lawyer.

      It's been a while since I checked out a new version, but most of Boost didn't need installation since it's mostly include files with templates. You just put them somewhere and include them. Now, there are some libraries (regexp iirc) that need to be compiled, but it builds out of the box on gcc for me.

      --
      Belief is the currency of delusion.
    2. Re:Use of Boost? by Anonymous Coward · · Score: 3, Insightful

      why is this bullshit even getting modded 5 Insightful? It's pure flamebait! Most half-decent compilers don't have problems with boost, the license consists of 5 sentences and .... how exactly can you screw up the installation of a mostly header-only library?

    3. Re:Use of Boost? by forkazoo · · Score: 2, Funny

      Boost is created and used by a highly vocal minority of C++ supergeeks. You can play with the definition of "modern", but it's only been in the recent past that Boost even compiled on more than the bleeding edge platforms. Most of the C++ projects I've worked on professionally are still worrying about whether to allow non-trivial use of templates or how to avoid screwing up exceptions, never mind trying to fight through the mess that is getting Boost installed and running these days and spending time getting lawyers to review the licensing terms.

      I'm glad I'm not the only one who doesn't think boost is everywhere. I mean, I used to. I thought I was the only one who wasn't using it, and that I must be missing out horribly. My projects were working fine, and I didn't really need boost, so I just accepted I was the only one not using it. Over time, I started to have the odd belief that I and everyone I talked to were the only ones not madly in love with template metaprogramming, and we (myself and everyone I know) were somehow simple minded abominations who just weren't clever enough to see how everything needed to be done with templates.

      That said, the threading API is conveniently portable to all the platforms I am likely to target with it, and saves me having to worry about platform specific details. So, I am slowly starting to move more and more in the boost direction.

    4. Re:Use of Boost? by Anonymous+Brave+Guy · · Score: 2, Interesting

      Anyone who had seen Boost source code knows that there are plenty of old hacks and workarounds in it specifically to make it work (to some documented extent) on such archaic compilers as VC6 and g++ 2.95.

      Sure, but those are by far the biggest targets. How many little hacks were in there to support the native compilers on IBM, Sun or HP workstations, or even older Macs before GCC took off there?

      Sounds like the kind of people who might be surprised that C++ is already out of draft for some time, then.

      You judge too quickly. The problem isn't a lack of understanding; some of the people I'm thinking of are among the smartest C++ hackers I've ever met, the kind of people who have been following the C++ newsgroups since some way back into the last century, been to their fair share of ACCU conferences, even filed the odd defect report against the C++ standard. Rather, the problem is that what the standard says and what was actually portable without excessive effort across a wide range of compilers were worlds apart for such a long time (and I don't just mean export).

      Oh, and I wonder - how do you "screw up exceptions"?

      That's worth at least a blog post, if not a book, but I'm certainly not thinking of forgetting to enforce pairing of new and delete if that's what you're assuming.

      For one thing, this is a prime example of varying compiler support. Techniques are known for implementing exceptions with almost zero overhead unless they are actually thrown. However, those techniques have only been implemented in compilers relatively recently, and as usual the big names have been better at it for the most part.

      Then there's the little issue of retrofitting: techniques for working safely with exceptions weren't well known when the feature first became available, and a lot of projects got stung and then avoided them. That may have been a poor choice with hindsight, but retrofitting exceptions onto an existing project that wasn't written with them in mind is challenging, to say that least.

      And then of course, there's the fact that it's not always as simple as RAII in C++: there was some discussion on another forum recently about the sanity (or lack thereof) in the popping from a stack problem in C++, for example.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    5. Re:Use of Boost? by immcintosh · · Score: 3, Insightful

      Boost is created and maintained by, among other people, the people who created and maintained the C++ STL.

      If by "on more than the bleeding edge platforms" you mean "on something other than MSVC," then yes. Microsoft's compiler was tremendously shitty when it came to standards conformance until .NET 2003 edition (I believe). Not to mention that only applies to the more esoteric libraries (like lambda functions and spirit), and boost is quite modular so you could still use the parts that did work.

      never mind trying to fight through the mess that is getting Boost installed and running these days and spending time getting lawyers to review the licensing terms

      You're definitely a Windows developer, aren't you? You're just suffering from the fact that Boost isn't really built with or for MSVC, and the Windows development process is very non-standard with respect to every other OS out there. On my system installing boost is a process that consists of all the "mess" of executing ONE terminal command ('pacman -S boost' and when it gets done Boost is installed and ready to use).

      As for the licensing terms, this is the boost software license. It is three (short) paragraphs long. Stick to the libraries that are covered by that license (most of them) and you won't have any trouble. If you need more libraries than that, I'm not aware of any that have meaningfully complex licenses.

      Should I mention the fact that boost is the code base for much of the additions to the next generation of the C++ STL? I know templates can be big and scary, but really...

  3. Re:Slight exaggeration? by imbaczek · · Score: 4, Informative

    you'll be missing out, boost fixes lots, I mean LOTS of C++ deficiencies... at a cost of compile times and sometimes bogus compiler errors.

  4. Boost epitomizes everything that is wrong with C++ by Anonymous Coward · · Score: 4, Insightful

    Boost is a great example of what a bloated, backward language C++ has become. It relies on complex intricacies from the standard that are difficult for compiler writers to implement correctly and robustly and without bugs. As a result, Boost itself is not very portable. Either it works on your platform and compiler, or it sort of works, or it doesn't.

    Boost--and template metaprogramming in general--is a great exercise in intellectual masturbation. They identified a bunch of useful functionality that isn't supported by the language. Rather than design a new language that does support that functionality, or build external tools to provide it, they contort the template semantics of the language in order to try and squeeze that functionality out of nothing.

    Well, template metaprograms are crap. They're nigh undebuggable, they produce unreadable error messages, they take forever to compile, and most C++ programmers don't know how to write (or even read) their implementations. They're an abomination.

    Since meta-programming is clearly useful, and something that a lot of programmers want to do... why not add true compile-time metaprogramming support to C++ (or better yet, develop a 10x simpler and cleaner language and put proper compile-time metaprogramming support into it)? Templates are not a natural way to express metaprograms. Why not give C++ programmers the tools to write nice, clean, object-oriented, imperative metaprograms instead of the kludgy functional metaprograms they are forced to scrape by with now?

    Again: Boost exemplifies everything that's wrong with C++. All of the corner-case features of C++ that Boost exploits in order to provide useful and sane functionality in an insane way, should be removed from the language (or its successor). Instead, general and clean and low-level metaprogramming mechanisms should take their place so that the functionality embodied in Boost could be written directly by any mid-level programmer instead of an elite group of template wankers. :P

  5. Re:Boost epitomizes everything that is wrong with by Anonymous Coward · · Score: 5, Funny

    For a real laugh, read the parent replacing "C++" with "C" and "Boost" with "C++"

  6. Re:Now if only by 4D6963 · · Score: 3, Funny

    doYouLikeThatNamingConventionBetter OrEveThaNamCon?

    --
    You just got troll'd!
  7. Huh. I'm still using STL. by MostAwesomeDude · · Score: 3, Insightful

    Seriously. Boost lets you avoid maybe five lines out of every hundred at the lower levels, but that doesn't really improve performance, just make code less readable and more dependent on another library. If people wanna use Boost, fine, but not all "modern C++ codebases" use it or even like it.

    --
    ~ C.
    1. Re:Huh. I'm still using STL. by smittyoneeach · · Score: 2, Funny

      So, you've implemented a perly regular expression library in straight STL?
      Yuda man.

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    2. Re:Huh. I'm still using STL. by hr.wien · · Score: 2, Insightful

      Five lines out of a hundred? That's an awfully specific number for something as huge as Boost. I know I saved a lot more than that on not having to implement a complete cross-platform signals/slot implementation myself. Or a threading library. Or a parser for Unicode data files from scratch. Or a smart pointer implementation. Or a specific graph implementation with corresponding algorithms every time I need one. I could go on.

      Boost isn't about performance. It's about letting you get shit done instead of reinventing the wheel all the time.

    3. Re:Huh. I'm still using STL. by hr.wien · · Score: 2, Interesting

      smart pointers (Seriously? You can't check pointers yourself?)

      Soo, what happens to your game in case of an exception then? Always careful to clean up any allocated resources I assume? See, this is not a contest to see who can "handle" cleaning up memory himself. Any monkey can do manual resource management if he wants to. Personally, I just can't be arsed to twiddle pointers and exposing myself to memory leaks and other problems unless I have to. Not that I use manual memory allocation much at all.

      Anyway, my hobbyist game framework contains at least 4 of the features you mentioned (How on earth do you manage to make a game without having at least one graph in there?), and I'm damned thankful I didn't have to write the boring implementation details myself.

    4. Re:Huh. I'm still using STL. by 19thNervousBreakdown · · Score: 2, Informative

      Hey, anyone else ever notice that games are, generally speaking, the buggiest, hackiest, most insecure pieces of software on a system? Other than spyware and "enterprisey" stuff, anyway.

      - smart pointers (Seriously? You can't check pointers yourself?)

      No, I can't, and neither can you unless you've found some way to replace your organic brain with a metal and wire positronic supercomputing device. Once you've managed that feat, you still have to overcome the impossibility of using exceptions properly without RAII. Stick to games.

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    5. Re:Huh. I'm still using STL. by Profane+MuthaFucka · · Score: 3, Funny

      I'm merely saying, "I don't need a massively powerful library, I just need to get shit done."

      Confucius say "Man who try to get shit done without library sit on pot with nothing to read."

      --
      Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
    6. Re:Huh. I'm still using STL. by imbaczek · · Score: 2, Insightful

      Every game more complex than pong will need everything you claim you don't need. Maybe you just don't understand your needs.

      regexps - configuration parsing
      signals and slots - game entities as properly isolated actors
      smart pointers - duh. we'll talk again when a dangling pointer hits you where it hurts the most.
      graphs - AI? pathfinding? don't really need those in games, do you?

  8. Re:Slight exaggeration? by HappySmileMan · · Score: 3, Interesting

    A statement on /. makes you less inclined to look at a set of C++ libraries, I'm not quite sure how that logic works, has the statement made on /. somehow affected the quality of the libraries?

  9. Re:Boost epitomizes everything that is wrong with by HappySmileMan · · Score: 2, Insightful

    As a result, Boost itself is not very portable. Either it works on your platform and compiler, or it sort of works, or it doesn't.

    If you left this out you would've looked like less of a troll, seriously. Boost compiles with GCC4 (From 4.0.1 to the latest, on Mac, Linux and BSD), Intel's compiler collection (All OSes), Visual C++ (7.1 to 9.0Beta) and Borland.

    If it isn't cross-platform enough, I'd like to know what platform and compiler you use

  10. The main thing missing, is introspection by Anonymous Coward · · Score: 3, Interesting

    The main drawback of metaprogramming via preprocessor is the same as metaprogramming via any external tool--lack of introspection.

    What you want is metacode that can be embedded in your normal C++ code, read by the C++ compiler, and can run with access to the AST or some other high-level representation of what the compiler has parsed. It should be able to read, interpret and modify the declarations that have already been parsed--generating new methods or typedefs on the fly, for example.

    The compiler knows things about your code: The sizes and alignment requirement of types, the offset of members, whether methods with a particular signature resolve or not, etc.

    Rather than funky template metaprograms which try to deduce these things by exploiting strange corner cases of the C++ standard, it would be nice if the metaprograms ran in a context where they had access to all of this information directly from the C++ compiler. It would be nice if the output of the metaprogram was source-code, too. (Much easier to debug that way, than by relying on obscure and cryptic error messages ala C++ templates). ..Of course, C++ is far too big and complicated for this to be done in a sane way. A much better bet is to design a new, smaller, cleaner language (aiming to have perhaps 10% of the complexity and 90% of the usefulness of C++). While you're adding metaprogramming in there, make some room for symbolic includes and a fast and robust incremental compilation system too. The textual includes of C and C++ are so backward its not even funny.

    1. Re:The main thing missing, is introspection by jonaskoelker · · Score: 2, Insightful

      What you want is metacode that can be embedded in your normal C++ code, read by the C++ compiler, and can run with access to the AST or some other high-level representation of what the compiler has parsed. It should be able to read, interpret and modify the declarations that have already been parsed--generating new methods or typedefs on the fly, for example. [...] it would be nice if the output of the metaprogram was source-code, too.

      So what you're trying to say is (use 'lisp)?
      (and
              (macros-run-on-ast-p 'lisp)
              (reads-decls-p 'lisp)
              (interprets-decls-p 'lisp)
              (modifies-decls-p 'lisp)
              (outputs-source-code-p 'lisp))

  11. Re:I've never used it by EWIPlayer · · Score: 5, Informative

    A lot of the other nay-sayers appear to be just useless trolls. You don't, so I'm going to reply.

    You're really selling boost and, by derivation, yourself short. Boost makes a ton of things simple and robust. I wrote the following, cross platform C++ code with boost:

    • asynchronous and robust TCP server in 80 lines of code - and it's decently configurable
    • a command line options parser that's truly extensible in about 60 lines of code.
    • a very solid threading model in about 100 lines of code
    • a synchronized and notification-based queue in about 50 lines of code
    • ... the list goes on for quite a while ...

    C++ is old and that means that it doesn't have anything like a modern language has. What it's missing, Boost fills in (not completely, mind you, but it does a really good job). With C++ you get speed and controllable code (C# runs a close second, but I still wouldn't write an OS in it), and with Boost you get a ton of ease back in the language as well.

    You're doing yourself a serious disservice by not looking into it. The one thing that I can't believe is that you really did look into it, and certainly not twice. If you did, you'd know it's not just a source of "template tricks"... far, far, far from it.

    If you're not using boost, I can guarantee you're reinventing the wheel... badly.

    --
    This sig used to be really funny...
  12. Re:Boost epitomizes everything that is wrong with by pla · · Score: 2, Insightful

    Rather than design a new language that does support that functionality, or build external tools to provide it, they contort the template semantics of the language in order to try and squeeze that functionality out of nothing.

    Wait - You actually mean to say you'd rather see an entirely new language appear to address mere oversights in an existing one, than extend the single most widely supported (in the sense of "used" and "dev tools exist on platform-X") language to do a few new tricks?

    As an aside, I don't use Boost. But if it does what I needed, you can bet the farm I'd use it rather than waiting for Programming-Language-Du-Jour support on a given platform... For a frame of reference, consider the classic comeback to the apologist's "but Java runs on so many platforms" argument: "And how did you compile the JVM?".

  13. Are we talking about the same library? by benhattman · · Score: 2, Insightful

    I'm seeing tons of comments on this thread about how awful boost is and how all it does is cause global warming, start wars with middle eastern nations, and destroy the pristine beauty of C++. Huh?!?

    Yes, boost includes meta programming libraries, but it also provides a number of other useful and relatively basic features which truly are missing in C++. The shared_ptr class is one example that nobody thought to include in STL for some unclear reason. What if you want non-platform specific threading or date/time functions?

    If you aren't using boost, that's fine, but it is as excellent of a general purpose C++ library as we have available today.

    1. Re:Are we talking about the same library? by chrome · · Score: 3, Interesting

      I think the problem a lot of people have with Boost is not related to how good/bad it is; but rather the complexity in understanding it, and the level of complexity that it brings to your program.

      The problem as I see it is that if you're not one of the scary smart people that understands the way the boost developers think, then you will have problems integrating boost into your project, and debugging it when things go wrong.

      A lot of those problems will be due to your own ignorance but at the end of the day if something isn't obvious or at least well documented (and boost documentation isn't exactly a light read at the best of times) people will be turned off by how difficult it is, no matter how useful or speedy or good or whatever.

      I work with a scary smart C++ programmer who swears by boost. I primarily code in C, but he convinced me to write a project using C++ and boost to see how thoroughly useful it is.

      With boost, you can in very few lines of code, write code that can do impressive stuff. This is very true. But what you don't realise when you start out is that when you include boost::asio or boost::threads or whatever, you're including hundreds of thousands of lines of other people's code into your program, perhaps unnecessarily complicating it and making it so when you have a problem, you'll be staring at the debugger going "my code failed where?!" with a backtrace stretching back to infinity (and making Java Exception backtraces look NICE).

      Yes, reinventing the wheel is a bad thing, and should be discouraged. But what if you just need a simple wheel? A wheel that, I don't know, goes around and around. I don't need it to report on its air pressure, or self repair, or sprout wings and fly if I go off a cliff. I just need it to be .. a wheel.

      And boost tries to be the best possible wheel for every occasion. Its the wheel designed by the Borg. Assembled by nanites, it itself is made from nanits and will, whether you like it or not, assimilate your program into the Borg.

    2. Re:Are we talking about the same library? by chrome · · Score: 2, Funny

      whoops, replied to the wrong post. Oh well, this'll do :P

  14. Re:Slight exaggeration? by kriss · · Score: 3, Insightful

    Affecting the quality? Obviously not, but I won't stop you for being silly to try to make a point.

    I'm seeing a release blurb which looks more like an abbreviated commercial press release - including the mandatory "we're the market leader" claim - for a pretty uninteresting update. While this sort of stuff weasels its way into slashdot every now and then, the whacked out of reality claims definitely raises the bullshit-o-meter alarm.

    Allow me to demonstrate using the "Almost every modern uses somewhere" template:

    "Almost every modern streaming video server uses Windows Media Technologies somewhere"
    "Almost every modern web server uses PHP somewhere"
    "Almost every modern web design firm uses Dreamweaver somewhere"

    Do these claims affect the quality of whatever technology they're trying to push? No. Are the statements obviously overreaching? Yes. Does the fact that the recommendation (assuming they're attached to one in the first place) both push a product/tech and try to convince me that "it Must be Good since So Many Others use it (especially if they're 'modern')" make me less inclined to buy into the pitch? Oh yes.

    YMMV, of course.

  15. Re:Boost epitomizes everything that is wrong with by benhattman · · Score: 3, Insightful

    Well, template metaprograms are crap. They're nigh undebuggable, they produce unreadable error messages, they take forever to compile, and most C++ programmers don't know how to write (or even read) their implementations. They're an abomination.

    Since meta-programming is clearly useful, and something that a lot of programmers want to do... why not add true compile-time metaprogramming support to C++ (or better yet, develop a 10x simpler and cleaner language and put proper compile-time metaprogramming support into it)? Templates are not a natural way to express metaprograms. Why not give C++ programmers the tools to write nice, clean, object-oriented, imperative metaprograms instead of the kludgy functional metaprograms they are forced to scrape by with now?

    This isn't proof that template metaprogramming or even the boost implementation of it sucks. This is proof that you've seen some bad code written with that feature. So what? Get in line! I've seen rotten code written using too many macros, I've seen rotten code written using too many templates, I've seen rotten code written using too many classes.

    Basically, name a language feature, find some engineer who decides that feature is the final greatest achievement in programming, and then give him a year or so. He'll produce some awful, unreadable, undebuggable code.

    Personally, I find boost quite useful, and I have never used it to write template metaprograms (it has other features as well). I think they are cool, but I just haven't run into anything where I needed that kind of performance boost.

  16. Trolls are modded insightful? by EWIPlayer · · Score: 5, Insightful

    Why is it that all the trolls are modded up? People that think that Boost is the same as STL are insightful. People that think Boost is for C++ supergeeks are insightful. People that think Boost epitomizes what is wrong about C++ are insightful. Boost represents a serious set of genius level code and design and helps thousands of programmers that understand how good it is.

    I understand that trolls exist and that they will always be with us. I understand that ignorant people will continue to post until the end of time. What I don't understand is that the /. community apparently agrees with them. This is supposed to be a community of hard-core geekery that understand things like operating systems, and game programming, and the intricacies of complex, multi-paradigm languages likes C++. What I'm seeing here is that it's populated, in greater numbers, with ignorance and "I heard a sound bite from someone who doesn't know what they're talking about so now I know everything" kinds of people.

    Have a look at what you know and what you don't know and then think about how intelligent your opinion actually is, and then post. And when you're modding that post, do the same thing.

    --
    This sig used to be really funny...
  17. Boost is a mixed bag by registrar · · Score: 5, Interesting

    I use C++ and Boost and like them. But it's a love-hate relationship. I mostly found the trolls to be insightful because they reflected that love-hate.

    C++ is a great programming language in the sense that English is a great natural language. Undesigned, piecemeal, weird idioms, and a pig to learn. But expressive, powerful, portable. Boost plays the role of "the King's English" -- it's a style guide. Sometimes arguable, sometimes wrong, but mostly very good at pointing out how to avoid deficiencies in the language. C, C#, Delphi, Objective C, OCaml, Mathematica and Python are unquestionably better languages than C++. And Esperanto is better than English. But I speak English and use C++ because it does what I need it to do better than any of the alternatives.

    Dealing with geeks is a problem for management to deal with. C++ is probably rightly the domain of ubergeeks. If you choose to use C++ because it suits your needs and your geeks like a bit of mental masturbation, good for you. No matter what language you use, your local geeks will push the boundaries. With C++, Boost mitigates the damage your geeks might cause when pushing boundaries (e.g. template metaprogramming). Boost is therefore a tool for managing geeks.

    The biggest problem with C++ and Boost is also their biggest asset. The language is too plastic. Every new library, object or template comes with a domain-specific-language that you just have to learn. For example, using functors to create threads. That is counter-intuitive and hard. But with Boost, each domain-specific-language tends to be well designed, so that if you understand C++, then Boost will push you into using the features in a way that is portable and safe.

    But an overwhelming gripe is that the online documentation is atrocious. In the sense of incomplete, unclear, impenetrable, useless examples, broken links, broken HTML, outdated. To the point where it becomes a good reason not to use Boost.

  18. Re:Now if only by ampathee · · Score: 3, Insightful

    That's PascalCase. This is camelCase.

  19. Re:Boost epitomizes everything that is wrong with by setagllib · · Score: 2, Informative

    Boost targets implementations which actually implement the C++ standard, not subsets of the standard for embedded purposes. The whole point of Boost's advanced functionality is that templates are the only way to express it in C++, short of implementing an actual metalanguage on top of C++, which would be even more heavyweight and incompatible.

    --
    Sam ty sig.
  20. How Boost features could be worked into a game by tepples · · Score: 3, Insightful

    And when using C++ [to write games], I don't need: regexps

    Not even for parsing your game's preference file?

    signals and slots

    Not even for notifying game objects that things have happened to other objects?

    smart pointers (Seriously? You can't check pointers yourself?)

    Not even for disposing of a mesh and texture once no nearby game objects need it anymore?

  21. Re:Boost epitomizes everything that is wrong with by Flat5 · · Score: 2, Insightful

    Boost is not a "template metaprogramming" library, as you seem to be implying. It's just a good library that happens to use template techniques for some purposes for which it is very well suited, for example, the Spirit parser.

    You don't need to know template metaprogramming at all to use Spirit. In fact, what Spirit does is make the specification of parsers look like BNF but in C++ syntax. Internally, yeah, the library is awfully complex. But that is the point of a library - it implements once and for all difficult things so that library user's lives are easier. And boost achieves that goal nicely.

  22. Set theory by krischik · · Score: 2, Insightful

    Did you even read the link you posted?

    For clarity, this article will call the two varieties UpperCamelCase and lowerCamelCase. Some people and organizations use the term camel case only for lower camel case, and refer to upper camel case as Pascal case.

    Yes I did. The main terms are UpperCamelCase and lowerCamelCase. CamelCase is for for both. PascalCase is just another word for UpperCamelCase.

    But I guess one can argue about the finer points for ever.

    Martin

  23. I iNsist by smittyoneeach · · Score: 2, Funny

    I iNsist oN tHe rIght tO uSe zAmbinian cAmel cAse.

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  24. Re:Boost epitomizes everything that is wrong with by Poltras · · Score: 2, Informative

    I've given you two keywords (restrict, export) and two features (implicit functions, inlining) that aren't well implemented (okay, lets say different enough so that one code might not be compatible) across the mainstream compilers, but I'll tell you another one: template metaprogramming and typename.

    I don't know about the state of VC2008 and Comeau since I've stopped working with them a while ago (working on OSX with intelc and g++), but I remember by my young self having a lot of difficulties building cross-compiler expression templates and dynamic type resolution libraries. I'm not talking export here, just using templates of templates to build expressions that should be inlined correctly at the end of the compiler pipeline. If it's compiled at all.

    I won't find a real world code example, lets just say that when you enter the templates recursion, template operators and heavy template worlds, and you throw in some functors, binding and dynamic typeinfo (which are all standards, not some unsupported feature like export), what works on one compiler will choke the next one. I've had my share of "Internal Compiler Error". Those are nasty and almost impossible to resolve. And sometimes G++ just give up without an error code... oO

    Saying that what works on one mainstream compiler should work on the other if you follow standard is the same as saying that coding POSIX guarantees you to work on all mainstream operating system. Theory is fine, practice showed us otherwise.

    And boost came across these problems as well. Do you think the HEAVY use of macros and preprocessing is only there to render the code unreadable? :)