Template Struct is_tensor

Inheritance Relationships

Base Type

  • public std::bool_constant< std::is_invocable_v< decltype(braket), T > &&std::is_invocable_v< decltype(indices), T > &&std::is_invocable_v< decltype(bra_rank), T > &&std::is_invocable_v< decltype(ket_rank), T > &&std::is_invocable_v< decltype(aux_rank), T > &&std::is_invocable_v< decltype(symmetry), T > &&std::is_invocable_v< decltype(braket_symmetry), T > &&std::is_invocable_v< decltype(particle_symmetry), T > &&std::is_invocable_v< decltype(color), T > &&std::is_invocable_v< decltype(is_cnumber), T > &&std::is_invocable_v< decltype(label), T > &&std::is_invocable_v< decltype(static_cast< std::wstring(*)(const T &)>(to_latex)), T > >

Struct Documentation

template<typename T>
struct is_tensor : public std::bool_constant<std::is_invocable_v<decltype(braket), T> && std::is_invocable_v<decltype(indices), T> && std::is_invocable_v<decltype(bra_rank), T> && std::is_invocable_v<decltype(ket_rank), T> && std::is_invocable_v<decltype(aux_rank), T> && std::is_invocable_v<decltype(symmetry), T> && std::is_invocable_v<decltype(braket_symmetry), T> && std::is_invocable_v<decltype(particle_symmetry), T> && std::is_invocable_v<decltype(color), T> && std::is_invocable_v<decltype(is_cnumber), T> && std::is_invocable_v<decltype(label), T> && std::is_invocable_v<decltype(static_cast<std::wstring (*)(const T&)>(to_latex)), T>>

Type trait for checking whether a given class fulfills the Tensor interface requirements Object t of a type that meets the concept must satisfy the following:

  • braket(t) and indices(t) are valid expressions and evaluate to a range of Index objects;

  • bra_rank(t), ket_rank(t) and aux_rank(t) are valid expression and return sizes of the bra(t), ket(t) and aux(t) ranges, respectively;

  • symmetry(t) is a valid expression and evaluates to a Symmetry object that describes the symmetry of bra/ket of a particle-symmetric t ;

  • braket_symmetry(t) is a valid expression and evaluates to a BraKetSymmetry object that describes the bra-ket symmetry of t ;

  • particle_symmetry(t) is a valid expression and evaluates to a ParticleSymmetry object that describes the symmetry of t with respect to permutations of particles;

  • color(t) is a valid expression and returns whether a nonnegative integer that identifies the type of a tensor; tensors with different colors can be reordered in a Product at will

  • is_cnumber(t) is a valid expression and returns whether t commutes with other tensor of same color (tensors of different colors are, for now, always assumed to commute)

  • label(t) is a valid expression and its return is convertible to a std::wstring;

  • to_latex(t) is a valid expression and its return is convertible to a std::wstring.