11#ifndef __7e4ffaa81e244723acbfbbaea68e03b1 
   12#define __7e4ffaa81e244723acbfbbaea68e03b1 
   14#include <lf/mesh/mesh.h> 
   24using MeshFunctionReturnType_t = 
decltype(std::declval<T>()(
 
   25    std::declval<const Entity>(), std::declval<const Eigen::MatrixXd>()));
 
   28struct VectorElementType {
 
   32template <
typename T, 
typename A>
 
   33struct VectorElementType<std::vector<T, A>> {
 
   38using VectorElement_t = 
typename VectorElementType<T>::type;
 
   40template <
class T, 
class RETURN_TYPE,
 
   41          class = 
typename std::enable_if<!std::is_same_v<
 
   42              VectorElement_t<MeshFunctionReturnType_t<T>>, 
void>>::type>
 
   43constexpr bool IsMeshFunctionCallable(
int ) {
 
   44  if constexpr (std::is_same_v<RETURN_TYPE, void>) {
 
   51  return std::is_same_v<VectorElement_t<MeshFunctionReturnType_t<T>>,
 
   55template <
class T, 
class RETURN_TYPE>
 
   56constexpr bool IsMeshFunctionCallable(
long ) {
 
   69template <
class T, 
class R = 
void>
 
   71    !std::is_reference_v<T> && std::is_copy_constructible_v<T> &&
 
   72    std::is_move_constructible_v<T> &&
 
   73    internal::IsMeshFunctionCallable<T, R>(0);
 
   81    internal::VectorElement_t<internal::MeshFunctionReturnType_t<R>>;
 
Contains helper functions and classes that all operate on the interface classes defined in lf::mesh.
 
internal::VectorElement_t< internal::MeshFunctionReturnType_t< R > > MeshFunctionReturnType
Determine the type of objects returned by a MeshFunction.
 
constexpr bool isMeshFunction
Determine whether a given type fulfills the concept MeshFunction.