[iostreams] When plan to move to C++20
ITNOA I have question about the plan to migrate code base from C++03 to C++20 for iostreams library I think iostreams library have very more clean if using modern C++ features, such as Concept Did you have any plan about that? thanks
On Thu, Feb 9, 2023 at 7:35 AM Seyyed Soroosh Hosseinalipour via Boost-users <boost-users@lists.boost.org> wrote:
I think iostreams library have very more clean if using modern C++ features, such as Concept
Functionally speaking, what would change for users? Would their programs behave differently? Would the API change? Thanks
Seyyed Soroosh Hosseinalipour via Boost-users <boost-users@lists.boost.org> wrote:
ITNOA
I have question about the plan to migrate code base from C++03 to C++20 for iostreams library
I think iostreams library have very more clean if using modern C++ features, such as Concept
Did you have any plan about that?
thanks
Lots of people use boost because they cannot use C++20 or even C++17. For those users, boost provides C++11 or C++14 portable equivalent of new std libs (boost::optional, boost::variant, boost::filesystem, etc.) If boost required C++20, many users would not be able to use boost anymore. Boost should be not require such a recent C++ standard. C++11 or C++14 are probably the best minimal standard for Boost IMO at the moment. Furthermore, looking at https://en.cppreference.com/w/cpp/20 (core language + STL), recent versions of gcc or msvc are in good shape with C++20 but clang is less complete. Dominique
Thanks for reply, but many of the libraries exist in boost, after some years candidate for adding to C++ ISO, so I think if we migrate iostream to latest standard of C++, we can candidate this library for ISO, because this library is very helpful, and general as standard wants. ________________________________ From: Boost-users <boost-users-bounces@lists.boost.org> on behalf of Dominique Pellé via Boost-users <boost-users@lists.boost.org> Sent: Thursday, February 9, 2023 6:49 PM To: boost-users@lists.boost.org <boost-users@lists.boost.org> Cc: Dominique Pellé <dominique.pelle@gmail.com> Subject: Re: [Boost-users] [iostreams] When plan to move to C++20 Seyyed Soroosh Hosseinalipour via Boost-users <boost-users@lists.boost.org> wrote:
ITNOA
I have question about the plan to migrate code base from C++03 to C++20 for iostreams library
I think iostreams library have very more clean if using modern C++ features, such as Concept
Did you have any plan about that?
thanks
Lots of people use boost because they cannot use C++20 or even C++17. For those users, boost provides C++11 or C++14 portable equivalent of new std libs (boost::optional, boost::variant, boost::filesystem, etc.) If boost required C++20, many users would not be able to use boost anymore. Boost should be not require such a recent C++ standard. C++11 or C++14 are probably the best minimal standard for Boost IMO at the moment. Furthermore, looking at https://en.cppreference.com/w/cpp/20 (core language + STL), recent versions of gcc or msvc are in good shape with C++20 but clang is less complete. Dominique _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users
On Fri, Feb 10, 2023 at 12:03 PM Seyyed Soroosh Hosseinalipour via Boost-users <boost-users@lists.boost.org> wrote:
Thanks for reply, but many of the libraries exist in boost, after some years candidate for adding to C++ ISO, so I think if we migrate iostream to latest standard of C++, we can candidate this library for ISO, because this library is very helpful, and general as standard wants.
I think it would be perfectly reasonable to update the library for C++20 -- it can be done in a way (aka version macros) backward compatible with older c++ libraries. That said, I don't think this design is where the standard is headed in 2023. Additions to I/O in c++20/23 have largely focused on format and print from fmtlib. And for good reasons - performance, flexibility, lack of ABI issues under many evolution scenarios, and unicode support. As simple example, in c++23 you can say: vector<int> v = { 1, 2, 3}; print( "{}", v ); //[1, 2, 3] map<string, int> m = { {"foo", 1}, { "bar", 2 }}; print( "{}", m ); //{ "bar": 2, "foo", 1} https://godbolt.org/z/ex4Kerqeq This is stuff that is fundamental and goes away from the traditional streams model. Note print does work files and streams as well, but it isn't required to. Many of the filtering cases are now covered by facilities like ranges::views::filter. So I'm not sure there's much appetite for going this direction. Jeff
@vinnie.falco@gmail.com for example with replacing C++20/23 concept with stream abstract model in boost iostream, I think many compiles time checking and programming model changes. Or adding ranges filter into compatible form with boost iostream filter. From: Jeff Garland <azswdude@gmail.com> Sent: Friday, February 17, 2023 7:32 PM To: boost-users@lists.boost.org Cc: Seyyed Soroosh Hosseinalipour <soorosh_abi@hotmail.com> Subject: Re: [Boost-users] [iostreams] When plan to move to C++20 On Fri, Feb 10, 2023 at 12:03 PM Seyyed Soroosh Hosseinalipour via Boost-users <boost-users@lists.boost.org<mailto:boost-users@lists.boost.org>> wrote: Thanks for reply, but many of the libraries exist in boost, after some years candidate for adding to C++ ISO, so I think if we migrate iostream to latest standard of C++, we can candidate this library for ISO, because this library is very helpful, and general as standard wants. I think it would be perfectly reasonable to update the library for C++20 -- it can be done in a way (aka version macros) backward compatible with older c++ libraries. That said, I don't think this design is where the standard is headed in 2023. Additions to I/O in c++20/23 have largely focused on format and print from fmtlib. And for good reasons - performance, flexibility, lack of ABI issues under many evolution scenarios, and unicode support. As simple example, in c++23 you can say: vector<int> v = { 1, 2, 3}; print( "{}", v ); //[1, 2, 3] map<string, int> m = { {"foo", 1}, { "bar", 2 }}; print( "{}", m ); //{ "bar": 2, "foo", 1} https://godbolt.org/z/ex4Kerqeq This is stuff that is fundamental and goes away from the traditional streams model. Note print does work files and streams as well, but it isn't required to. Many of the filtering cases are now covered by facilities like ranges::views::filter. So I'm not sure there's much appetite for going this direction. Jeff
participants (4)
-
Dominique Pellé
-
Jeff Garland
-
Seyyed Soroosh Hosseinalipour
-
Vinnie Falco