lumiera_/src/lib/meta
Ichthyostega 8c12e88fd3 C++17: fix detector for STL container iterability
the reason for the failure, as it turned out,
is that 'noexcept' is part of the function signature since C++17

And, since typically a STL container has const and non-const variants
of the begin() and end() function, the match to a member function pointer
became ambuguous, when probing with a signature without 'noexcept'

However, we deliberately want to support "any STL container like" types,
and this IMHO should include types with a possibly throwing iterator.
The rationale is, sometimes we want to expose some element *generator*
behind a container-like interface.

At this point I did an investigation if we can emulate something
in the way of a Concept -- i.e. rather than checking for the presence
of some functions on the interface, better try to cover the necessary
behaviour, like in a type class.

Unfortunately, while doable, this turns out to become quite technical;
and this highlights why the C++20 concepts are such an important addition
to the language.

So for the time being, we'll amend the existing solution
and look ahead to C++20
2020-02-21 18:57:49 +01:00
..
configflags.hpp Global-Layer-Renaming: adjust namespace qualification 2018-11-15 23:59:23 +01:00
duck-detector.hpp Refactoring: extract new duck detectors 2017-12-05 06:05:33 +01:00
function-closure.hpp DockAccess: better pass functor as const& into partial application 2018-01-13 00:58:08 +01:00
function-erasure.hpp Functions-Commands: discard the ability to compare functors for equivalence (closes #294) 2019-06-23 19:45:30 +02:00
function.hpp DI: port the old Singleton unit tests 2018-03-26 07:54:16 +02:00
generator-combinations.hpp clean up lib/meta namespaces 2011-12-03 03:15:59 +01:00
generator.hpp clean up lib/meta namespaces 2011-12-03 03:15:59 +01:00
maybe-compare.hpp Functions-Commands: discard the ability to compare functors for equivalence (closes #294) 2019-06-23 19:45:30 +02:00
no-instance.hpp Doxygen: fill in missing file level headlines for the Library (metaprogramming) 2016-11-07 15:39:13 +01:00
size-trait.hpp Doxygen: fill in missing file level headlines for the Library (metaprogramming) 2016-11-07 15:39:13 +01:00
trait-special.hpp MERGE Doxygen clean-up done during the last months 2017-04-01 23:59:00 +02:00
trait.hpp C++17: fix detector for STL container iterability 2020-02-21 18:57:49 +01:00
tuple-helper.hpp Library: sharpen detection of possible string conversion 2018-12-10 00:09:56 +01:00
tuple-record-init.hpp Library: replace boost::noncopyable by our own library solution 2018-03-24 05:35:13 +01:00
typelist-manip.hpp maximum munch 2016-12-23 04:23:03 +01:00
typelist-util.hpp maximum munch 2016-12-23 04:23:03 +01:00
typelist.hpp Metaprogramming(#987): mark planned transition to variadic arguments 2017-09-28 00:10:45 +02:00
typeseq-util.hpp Metaprogramming(#987): mark planned transition to variadic arguments 2017-09-28 00:10:45 +02:00
util.hpp Library: sharpen detection of possible string conversion 2018-12-10 00:09:56 +01:00
value-type-binding.hpp Library: put the new type rebinding trait into general use 2017-12-02 02:51:51 +01:00
variadic-helper.hpp Metaprogramming: extend testcase and remould pickInit to support arbitrary arguments 2017-09-29 02:35:15 +02:00
virtual-copy-support.hpp Library: replace boost::noncopyable by our own library solution 2018-03-24 05:35:13 +01:00