Serac  0.1
Serac is an implicit thermal strucural mechanics simulation code.
function_signature.hpp
1 #pragma once
2 #include <camp/camp.hpp>
4 
5 template <typename T>
7 
13 template <typename output_type, typename... input_types>
14 struct FunctionSignature<output_type(input_types...)> {
15  using return_type = output_type;
16  using parameter_types = std::tuple<input_types...>;
17 
19  static constexpr int num_args = sizeof...(input_types);
20 
22  static constexpr auto index_seq = camp::make_int_seq<int, num_args>{};
23 };
24 
35 template <mfem::Geometry::Type geom, typename test, typename... trials>
36 auto trial_elements_tuple(FunctionSignature<test(trials...)>)
37 {
39 }
40 
48 template <mfem::Geometry::Type geom, typename test, typename... trials>
49 auto get_test_element(FunctionSignature<test(trials...)>)
50 {
52 }
This file contains helper traits and enumerations for classifying finite elements.
tuple(T...) -> tuple< T... >
Class template argument deduction rule for tuples.
output_type return_type
the type returned by the function
std::tuple< input_types... > parameter_types
the types of the function arguments
Template prototype for finite element implementations.
This is a class that mimics most of std::tuple's interface, except that it is usable in CUDA kernels ...
Definition: tuple.hpp:28