Reduces definition of a type to single value using provided Reducer.
Verifies that Reducer is an aggregate type that conforms type reducer requirements and issues static assertion otherwise.
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).
Copyright (c) 2017 dunnhumby Germany GmbH. All rights reserved.
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.