LUMIERA.clone/tests/library/meta
Ichthyostega 23b4a54e79 Metaprogramming: detect structured types
This solution checks only the minimal precondition,
which is that a type supports `std::tuple_size<T>`.

A more complete implementation turns out to be surprisingly complex,
since a direct check likely requires compile-time reflection capabilities
at the level of at least C++23
 - `std::tuple_element<i,T>` typically implements limits checks,
   which interfere with the detection of empty structured types
 - the situation regarding `std::get<i>()` is even more complicated,
   since we might have to probe for ADL-based solutions, or member templates

The check for minimal necessary precondition however allows us to
single out std::tuple, std::array and our own structured types in
compilation branching, which suffices to fulfils actual needs.
2024-12-17 16:59:02 +01:00
..
access-casted-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
config-flags-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
duck-detector-extension-test.cpp Library: shorten display of unsigned types 2024-11-22 22:02:45 +01:00
duck-detector-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
dummy-functions.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
function-closure-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
function-composition-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
function-erasure-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
function-signature-test.cpp Library: shorten display of unsigned types 2024-11-22 22:02:45 +01:00
generator-combinations-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
generator-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
iterable-classification-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
late-bind-instance-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
meta-utils-test.cpp Metaprogramming: detect structured types 2024-12-17 16:59:02 +01:00
tuple-diagnostics.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
tuple-helper-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
tuple-record-init-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
type-demangling-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
type-display-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
typelist-diagnostics.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
typelist-manip-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
typelist-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
typelist-util-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
typeseq-manip-test.cpp Invocation: implementation for the chain-constructor 2024-12-10 18:49:06 +01:00
value-type-binding-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
variadic-argument-picker-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
virtual-copy-support-test.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00