Generic utility allowing to recursively visit an arbitrary type and reduce
its definition to some compile-time value. It is intended to be used as an
implementation cornerstone for complex type traits to avoid having to
rewrite the recursive type reflection boilerplate wherever it's needed.
NB: because this module is often used as purely compile-time dependency it
used built-in asserts instead of ocean.core.Test to reduce amount of
cyclic imports. ocean.meta modules in general are not supposed to
import anything outside of ocean.meta.
Boost Software License Version 1.0. See LICENSE_BOOST.txt for details.
Alternatively, this file may be distributed under the terms of the Tango
3-Clause BSD License (see LICENSE_BSD.txt for details).
Generic utility allowing to recursively visit an arbitrary type and reduce its definition to some compile-time value. It is intended to be used as an implementation cornerstone for complex type traits to avoid having to rewrite the recursive type reflection boilerplate wherever it's needed.
NB: because this module is often used as purely compile-time dependency it used built-in asserts instead of ocean.core.Test to reduce amount of cyclic imports. ocean.meta modules in general are not supposed to import anything outside of ocean.meta.