C++QEDCore  2.100.2 (v2 Milestone 10 Development branch)
a framework for simulating open quantum dynamics – core
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Helpers to BlitzArraySliceIterator

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...
 

Detailed Description

Sometimes used on their own as well, so they are exposed in the header file.

Template Parameters
RANKarity of the Hilbert space
Vcompile-time vector holding the retained index positions (cf. Specifying subsystems)
Precondition
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.

See also
Notes on the implementation of Iterator