What C++14/1z standard or TS libraries would you like to have available on a C++11 compiler?

Hi, I would like to have your feedback on C++ standard library features you would like to have available for a C++11 compiler. The idea would be to present a Boost.StdExtensions library that would provide some of these features for review with some of these features. Please , let me know if you are interested in participating in this project and working on some specific parts. This library should avoid as much Boost dependencies as possible. How the library could be structured? I believe that it should follow the C++ standard files. Which folder should be used? boost/stdext? boost/stdext11? Which namespace? boost::stdext? I have prefixed with a * the lines that interest myself and with VBE* those that I could work on. The features that need compiler help or that need C++14/17 language features are excluded and prefixed by N/A. Please be free to add a * if you are interested and your name as well if you want to participate. Best, Vicente P.S. The project could be as well extended to C++98 compilers with C++11 standard libraries (But I would not have time to invest in). P.S.S. I would also be interested in extend the project to extended to C++14 compilers. C++14 standard libraries ================ VBE* N3658 - Compile-time integer sequences * N3654 - Quoted Strings N3656 - make_unique VBE* N3462 - std::result_of and SFINAE * N3668 std::exchange() N3469 Constexpr Library Additions: chrono N3470 Constexpr Library Additions: containers N3471 Constexpr Library Additions: utilities N3302 Constexpr Library Additions: complex VBE* N3545 An Incremental Improvement to integral_constant N3644 Null Forward Iterators N3670 Addressing Tuples by Type N3671 Making non-modifying sequence operations more robust N3642 User-defined Literals VBE* N3655 TransformationTraits Redux (excluding part 4) N3657 Adding heterogeneous comparison lookup to associative containers N3669 Fixing constexpr member functions without const N3659 Shared Locking in C++ N3779 User-defined Literals for std::complex N3789 Constexpr Library Additions: functional N3887 Consistent Metafunction Aliases N3891 A proposal to rename shared_mutex to shared_timed_mutex C++1z standard libraries ================ VBE* N3911 TransformationTrait Alias void_t N4089 Safe conversions in unique_ptr<T[]> VBE* N4169 A proposal to add invoke function template N4258 Cleaning-up noexcept in the Library. N4277 TriviallyCopyable reference_wrapper. N4279 Improved insertion interface for unique-key maps. VBE* N4280 Non-member size() and more N4284 Contiguous Iterators. N4387 improving pair and tuple VBE* N4389 bool_constant N4508 shared_mutex for C++17 N4366 LWG 2228 missing SFINAE rule N4510 Minimal incomplete type support for standard containers N/A* P0006R0 Adopt Type Traits Variable Templates for C++17. VBE* P0092R1 Polishing <chrono> VBE* P0007R1 Constant View: A proposal for a std::as_const helper function template. VBE* P0156R0 Variadic lock_guard(rev 3). P0074R0 Making std::owner_less more flexible VBE* P0013R1 Logical type traits rev 2 P0024R2 The Parallelism TS Should be Standardized P0226R1 Mathematical Special Functions for C++17 VBE* P0220R1 Adopt Library Fundamentals V1 TS Components for C++17 P0218R1 Adopt the File System TS for C++17 P0033R1 Re-enabling shared_from_this VBE* P0005R4 Adopt not_fn from Library Fundamentals 2 for C++17 P0152R1 constexpr atomic::is_always_lock_free N/A* P0185R1 Adding [nothrow-]swappable traits P0253R1 Fixing a design mistake in the searchers interface P0025R0 An algorithm to "clamp" a value between a pair of boundary values P0154R1 constexpr std::hardware_{constructive,destructive}_interference_size P0030R1 Proposal to Introduce a 3-Argument Overload to std::hypot P0031R0 A Proposal to Add Constexpr Modifiers to reverse_iterator, move_iterator, array and Range Access P0272R1 Give std::string a non-const .data() member function VBE* P0077R2 is_callable, the missing INVOKE related trait Fundamental V1 TS ============ Uses-allocator construction Changes to std::shared_ptr and weak_ptr Additions to std::function Additions to std::promise Additions to std::packaged_task Class erased_type VBE* Calling a function with a tuple of arguments N/A Type traits (_v) Other type transformations Compile-time Rational Arithmetic Time Utilities System Error Support Class memory_resource Class template polymorphic_allocator Template alias resource_adaptor Global memory resources Pool resource classes Class monotonic_buffer_resource Alias templates using polymorphic memory resource Searchers * Optional Objects Initial implementation * class any * string_view memory Algorithms library

Vicente J. Botet Escriba wrote:
VBE* N3658 - Compile-time integer sequences
Many implementations are available, but if you need one you can lift without any changes at all, https://github.com/pdimov/mp11/blob/master/include/boost/integer_sequence.hp... https://github.com/pdimov/mp11/blob/master/test/integer_sequence.cpp I think that we probably should put it into type_traits.
N3656 - make_unique
This is already in smart_ptr, I think.
P0033R1 Re-enabling shared_from_this
So is this.
Changes to std::shared_ptr and weak_ptr
And this.

Le 22/05/2016 à 18:06, Peter Dimov a écrit :
I would like to reduce dependencies to Boost libraries as much as possible. When the new feature can be implemented only if we have already an implementation of some parts of the standard library this needs evidently much more work. E.g. changing the constexpr of some member functions, ... This is way I'm not interested on working on these features as part of Boost.StdExtensions. I'm interested in working on the new features that can be added on top of a C++11 version? Boost.StdExtensions could be in someway similar to Boost.TR1. But I would like to reduce the dependencies to Boost. Boost.StdExtensions would contain only features that have been approved in a C++ standard version but that are not delivered by the standard library associated to the compiler version. Vicente

On 22 May 2016, at 19:06, Vicente J. Botet Escriba <vicente.botet@wanadoo.fr> wrote:.
I would like to reduce dependencies to Boost libraries as much as possible.
Why? Will it e.g. be released outside boost? Wouldn't it have to be *completely* independent in that case?

On 5/22/2016 11:40 AM, Vicente J. Botet Escriba wrote:
I do not understand what you are asking about ? Don't most compilers when set to C++11 mode on up support C++ standard libraries which support the use of C++11 idioms ? Evidently I am confused what you are proposing. Could you specify your idea for a Boost.StdExtensions library more clearly.

I think it would be nice to have C++14 and C++1z missing items in boost, but I think putting all into one monster library is a bad idea. Also, libraries may evolve beyond the standard. For example, the library could provide C++14 integral constant, but it could also provide the operators for it as well, which could be standardized later. This is another reason, it may make sense to split this into smaller libraries.

On 23/05/2016 12:33, Paul Fultz II wrote:
This has already happened for libraries such as smart_ptr; a subset of the Boost library entered the standard in C++11 (or even earlier in TR1), but it continued to evolve and important features such as P0033R1 won't be added until C++17.
participants (6)
-
Edward Diener
-
Gavin Lambert
-
Paul Fultz II
-
Peter Dimov
-
Thijs (M.A.) van den Berg
-
Vicente J. Botet Escriba