Many constructs in the framework require the specification of a subsystem of a multiary quantum system @ compile time. The main example is retained index positions for slicing (cf. The multi-array concept). It is the template parameter V
, a compile-time sequence, that specifies the subsystem.
tmptools::Vector and range_c
from Boost.MPL.
Size<V>::value
must not be larger than the arityV
must not “contain”These are checked for @ compile time, and any violation is signalled by more or less intelligent compiler errors generated with the help of Boost.MPL's static assertions.