Can Boost accept libraries that works only with C++0x compilers?

Hi, Boost has a high reputation due, between others, to having high portable libraries. I was wondering if this portability goal would not return against Boost, and limit the expressivenes of the libraries that can be included if we continue to force them to work with C++98 compilers. Even if C++0x is not yet released, there are already some compilers that allow to release these C++0X specific libraries. In order to have the best of both worlds, what do you think about start accepting libraries that are portable on C++0x compilers? This could be released as a separated package, that will, of course, depend on the current Boost package. I don't know if we need a specific namespace for these kind of libraries. Comments are welcome. Best, Vicente

vicente.botet wrote:
Even if C++0x is not yet released, there are already some compilers that allow to release these C++0X specific libraries.
Will it be called "C++0x" or "C++10"?
In order to have the best of both worlds, what do you think about start accepting libraries that are portable on C++0x compilers?
How about waiting with this until at least the name is fixed? Regards, Thomas

Thomas Klimpel schrieb:
vicente.botet wrote:
Even if C++0x is not yet released, there are already some compilers that allow to release these C++0X specific libraries.
Will it be called "C++0x" or "C++10"?
C++11 is more likely. http://herbsutter.com/2010/03/13/trip-report-march-2010-iso-c-standards-meet... -Christopher

----- Original Message ----- From: "Thomas Klimpel" <Thomas.Klimpel@synopsys.com> To: <boost@lists.boost.org> Sent: Tuesday, May 18, 2010 5:26 PM Subject: Re: [boost] Can Boost accept libraries that works only withC++0x compilers?
vicente.botet wrote:
Even if C++0x is not yet released, there are already some compilers that allow to release these C++0X specific libraries.
Will it be called "C++0x" or "C++10"?
It is C++0x. And is already fixed.
In order to have the best of both worlds, what do you think about start accepting libraries that are portable on C++0x compilers?
How about waiting with this until at least the name is fixed?
I didn't think that the name could be a problem. C++0x has included a lot of features that are there to help making better libraries. When Boost would start using these features without taking care of portability issues with C++98? Vicente

Christopher Schmidt wrote:
Will it be called "C++0x" or "C++10"?
C++11 is more likely.
http://herbsutter.com/2010/03/13/trip-report-march-2010-iso-c-standards-meet...
From the reference Christopher gives, I actually get the impression that the name is already fixed, and that it will be "C++11".
vincente.botet wrote:
Will it be called "C++0x" or "C++10"?
It is C++0x. And is already fixed.
Do you also have a reference for this statement? vincente.botet wrote:
I didn't think that the name could be a problem.
It's not so much about the name, but about the consequences of the confusion it creates. And I wasn't sure whether the name is still open or already fixed, so I just pointed out that an unclear name is really bad in this case. I did some tests with the proposed boost move library some time ago and wasn't aware that gcc-4.3, gcc-4.4 and gcc-4.5 behaved complete different in c++0x mode, and the resulting confusion led me to wrong conclusion and also costed me quite some time. And the libraries that already have emulated move support and C++0x mode move support will have a nice time working around the subtle differences between the different C++0x modes that can already be found in the wild. Of course you intent C++0x to mean the C++0x mode as found in gcc-4.5, msvc-10 and icc-11, but as stated in <http://lists.boost.org/Archives/boost/2010/04/165325.php>, these compilers are not even among the compilers that are tested for the release branch. OK, msvc-10 is tested now for the release branch thanks to Richard Webb, and I haven't even said "thank you" for this :( But msvc-10 has many failed regression tests in the summary, and gcc-4.5 would also have many if it would be present, as you can see in the trunk summary where it is present: <http://beta.boost.org/development/tests/trunk/developer/summary.html>. Why not simply wait a bit for the confusion to settle? I haven't even got any useful feedback so for on my patches for Boost.Iterator to get Boost.MultiArray working with msvc-10: <http://lists.boost.org/Archives/boost/2010/05/165798.php>. And I'm pretty sure that Boost.MultiArray is not the only boost library with serious problems on msvc-10 and icc-11 (especially since in my opinion it is Boost.Iterator that has the bug). Regards, Thomas

on 18.05.2010 at 19:26 Thomas Klimpel wrote :
vicente.botet wrote:
Even if C++0x is not yet released, there are already some compilers that allow to release these C++0X specific libraries.
Will it be called "C++0x" or "C++10"?
"C++0xA" i guess -- Pavel P.S. if you notice a grammar mistake or weird phrasing in my message please point it out

On 18 May 2010 15:56, vicente.botet <vicente.botet@wanadoo.fr> wrote:
In order to have the best of both worlds, what do you think about start accepting libraries that are portable on C++0x compilers? This could be released as a separated package, that will, of course, depend on the current Boost package.
I think we'd have to see what the library does, and why it requires C++0x to do it before deciding. There's not much point in considering this until it's likely that such a library will be accepted. But if one is accepted, then it doesn't necessarily have to be distributed separately since we already have libraries with different requirements in boost. Daniel

----- Original Message ----- From: "Daniel James" <dnljms@gmail.com> To: <boost@lists.boost.org> Sent: Tuesday, May 18, 2010 7:24 PM Subject: Re: [boost] Can Boost accept libraries that works only with C++0xcompilers?
On 18 May 2010 15:56, vicente.botet <vicente.botet@wanadoo.fr> wrote:
In order to have the best of both worlds, what do you think about start accepting libraries that are portable on C++0x compilers? This could be released as a separated package, that will, of course, depend on the current Boost package.
I think we'd have to see what the library does, and why it requires C++0x to do it before deciding. There's not much point in considering this until it's likely that such a library will be accepted. But if one is accepted, then it doesn't necessarily have to be distributed separately since we already have libraries with different requirements in boost.
I understand your concern. I wanted just know if this was possible or not. Thanks, Vicente

On 18 May 2010 20:53, vicente.botet <vicente.botet@wanadoo.fr> wrote:
I wanted just know if this was possible or not.
I think it's possible, the guidelines aren't entirely clear: https://svn.boost.org/trac/boost/wiki/Guidelines/Requirements#Portability IMO it would be harmful to forbid it, since we should encourage innovative use of new features, but the library's rational would have to include a convincing justification. A possible example might be an allocator that only works with C++0x allocator_traits. Daniel

On 18 May 2010, at 21:41, Daniel James wrote:
On 18 May 2010 20:53, vicente.botet <vicente.botet@wanadoo.fr> wrote:
I wanted just know if this was possible or not.
I think it's possible, the guidelines aren't entirely clear:
https://svn.boost.org/trac/boost/wiki/Guidelines/Requirements#Portability
IMO it would be harmful to forbid it, since we should encourage innovative use of new features, but the library's rational would have to include a convincing justification. A possible example might be an allocator that only works with C++0x allocator_traits.
I hope some libraries will gain some C++0x extensions, in particular variadic methods allow for some nice tricks, I personally already use a variadic push_back /// Push an arbitrary length list of elements onto the back of a container template<typename T, typename... Args> void push_back(T& t, const Args&... args) and boost.assign can be made (in my opinion) much nicer looking, switching: list_of(2)(3)(5)(7)(11); to list_of(2,3,5,7,11) Chris

On 18 May 2010 23:35, Christopher Jefferson <chris@bubblescope.net> wrote:
I hope some libraries will gain some C++0x extensions, in particular variadic methods allow for some nice tricks, I personally already use a variadic push_back
We're already using variadic methods in a few places. Daniel

On 5/18/2010 10:56 AM, vicente.botet wrote:
Hi,
Boost has a high reputation due, between others, to having high portable libraries.
I was wondering if this portability goal would not return against Boost, and limit the expressivenes of the libraries that can be included if we continue to force them to work with C++98 compilers.
Even if C++0x is not yet released, there are already some compilers that allow to release these C++0X specific libraries.
In order to have the best of both worlds, what do you think about start accepting libraries that are portable on C++0x compilers? This could be released as a separated package, that will, of course, depend on the current Boost package. I don't know if we need a specific namespace for these kind of libraries.
Comments are welcome.
It would be ridiculous to only accept libraries which used certain C+0X features which are not in C++98 ( or C++2003 ). But I think it would be acceptable to have libraries which only work with certain C++0X features, once C++0X is officially released, just as long as the end-user of the library understood which features of C++0X would be required and which compiler(s) implement those features.
participants (7)
-
Christopher Jefferson
-
Christopher Schmidt
-
Daniel James
-
DE
-
Edward Diener
-
Thomas Klimpel
-
vicente.botet