Skip to content

An implementation of C++ Extensions for Ranges

License

Notifications You must be signed in to change notification settings

tahonermann/cmcstl2

 
 

Repository files navigation

cmcstl2

An implementation of the Ranges TS "C++ Extensions for Ranges" N4560 with extensions for proxy iterators from P0022: Proxy Iterators for the Ranges Extensions and updates from P0370: Ranges TS Design Updates Omnibus. There are still quite a few rough edges, but the library is now feature-complete.

Compilation requires GCC 6.1 with the -fconcepts command line option. Compile times are currently on the slow side, even for C++. The implementation of Concepts in GCC is brand-spanking-new and hasn't yet had proper performance tuning.

NOTE WELL: This library achieves reasonable performance from concepts by using constexpr variable templates as concept predicates. This was a great idea, until bugs introduced late in GCC 6 development caused the compiler to puke when it sees ODR uses of partially specialized variable templates. Consequently, programs using the library concepts will fail to link if compiled without optimizations. (The relevant bugs have been fixed on GCC trunk, so non-optimizing builds succeed with tip-of-trunk GCC.)

Build status

  • on Travis-CI: Travis Build Status

About

An implementation of C++ Extensions for Ranges

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 99.1%
  • CMake 0.9%