Classes | Typedefs
Protocols

Classes that define metaprogramming interfaces. More...

Classes

struct  dg::protocols::NumericalFlux
 Defines the interface for DG numerical fluxes. More...
 
struct  tt::ConformsTo< Protocol >
 Indicate a class conforms to the Protocol. More...
 

Typedefs

template<typename ConformingType , typename Protocol >
using tt::conforms_to = typename std::is_convertible< ConformingType *, ConformsTo< Protocol > * >
 Checks if the ConformingType conforms to the Protocol. More...
 

Detailed Description

Classes that define metaprogramming interfaces.

See the Protocols section of the dev guide for details.

Typedef Documentation

◆ conforms_to

template<typename ConformingType , typename Protocol >
using tt::conforms_to = typedef typename std::is_convertible<ConformingType*, ConformsTo<Protocol>*>

Checks if the ConformingType conforms to the Protocol.

This metafunction is SFINAE-friendly. See tt::assert_conforms_to for a metafunction that is not SFINAE-friendly but that triggers static asserts with diagnostic messages to understand why the ConformingType does not conform to the Protocol.

This metafunction only checks if the class derives off the protocol to reduce compile time. Protocol conformance is tested rigorously in the unit tests instead.

See also
Documentation on Protocols
tt::assert_conforms_to