Subject: Re: [boost] Boost Incubator Status Report
From: Rob Stewart (robertstewart_at_[hidden])
Date: 2014-11-09 05:49:04
On November 8, 2014 8:01:25 PM EST, Robert Ramey <ramey_at_[hidden]> wrote:
>Edward Diener-3 wrote
>a) All template parameters type requirements should be explicitly
>b) The above preclude the usage of documentation tools -
>specifically DOxygen which cannot support the creation of
>documentation in accordance with a) above.
What's wrong with the tparam attribute?
>c) All template parameters should be at compile time so that that
>the compiler will trap when a user attempts to use a type which
>does not meet the documented requirements.
I assume you meant to write that template parameters should be checked at compile time, in which case I agree. Unfortunately, the tools we have for that are awkward presently. We're awaiting concepts.
>d) C++ does not currently support the above in the language
>itself. But this is no reason not to check the parameter types
>using Boost Concept Checking Library or other means.
When possible, I agree. Unfortunately, the use of BCCL can change the characteristics of a type such as making an otherwise trivially copyable type non-trivially copyable.
>For Boost to continue forward - it has to appeal to the "rest of us".
>a) more libraries,
>b) of much higher quality,
>c) supporting more niches areas,
>d) which can be written by more people
There is certainly room for the niche libraries you mention, since they won't be standardized.
To your point of libraries "for the rest of us", one way that Boost causes itself problems is by our dissatisfaction with simpler designs. We're enamored with more esoteric designs. The imposition of templates when polymorphism would suffice, even if suboptimal, turns off many, the STL notwithstanding. Perhaps we need to encourage both kinds of libraries.
The other difficulty is that many companies are pleased to use high quality, free libraries, like those from Boost, but are reluctant to permit sharing those created in-house. The result is that many potential additions to Boost and, ultimately, the Standard are excluded.
(Sent from my portable computation engine)