SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::discretization::forms::Form Concept Reference

Concept for types that are forms in the discretization framework. In order satisfy this concept a type must derive from the form base class and must define a member type called operand_types which is intended to be a type list of the trial and test terms for the form. More...

#include <concept.hpp>

Concept definition

template<typename FormCandidate>
concept serif::discretization::forms::Form = std::derived_from<std::remove_cvref_t<FormCandidate>, form> &&
requires {
typename std::remove_cvref_t<FormCandidate>::operand_types;
}
Concept for types that are forms in the discretization framework. In order satisfy this concept a typ...
Definition concept.hpp:18
The form struct is a tag type that is used to identify a form in the discretization....
Definition forms.hpp:31

Detailed Description

Concept for types that are forms in the discretization framework. In order satisfy this concept a type must derive from the form base class and must define a member type called operand_types which is intended to be a type list of the trial and test terms for the form.

Todo
Consider strengthening this concept to enforce that the operand_types type list contains only operand types and that there is an entry for TrialT and TestT. This would require additional compile-time checks to ensure that the types in the operand_types list are valid operand types and that they include the required trial and test terms.