Classes | |
class | blitzplusplus::basi::TransposerOrIndexerRankTooHighException< RANK > |
Exception thrown if the partial specialization of Transposer or Indexer for the given RANK does not exist. More... | |
class | blitzplusplus::basi::Transposer< RANK, V > |
Class performing the “possible permutation” of the retained indices (cf. Synopsis). More... | |
class | blitzplusplus::basi::Indexer< RANK, V > |
Performs the slicing on an array already transposed by Transposer. More... | |
Sometimes used on their own as well, so they are exposed in the header file.
RANK | arity of the Hilbert space |
V | compile-time vector holding the retained index positions (cf. Specifying subsystems) |
Size<V> <= RANK
The technique of using (non-templated) static worker functions of class templates is meant to allow partial specializations, which are not possible for function templates.
These are just rudimentary definitions, the actual definitions being partial specializations of Transposer::transpose and Indexer::index along RANK (cf. trailing part of BlitzArraySliceIterator.tcc
) The functions will throw if a partial specialization for the given RANK does not exist.