Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <type_traits> 7 : 8 : #include "Utilities/TMPL.hpp" 9 : 10 : namespace elliptic { 11 : namespace detail { 12 : struct NoModifyBoundaryData { 13 : using argument_tags = tmpl::list<>; 14 : }; 15 : } // namespace detail 16 : 17 : /// The `argument_tags` of the `System::modify_boundary_data`, or an empty list 18 : /// if `System::modify_boundary_data` is `void`. 19 : template <typename System> 20 1 : using get_modify_boundary_data_args_tags = typename tmpl::conditional_t< 21 : std::is_same_v<typename System::modify_boundary_data, void>, 22 : detail::NoModifyBoundaryData, 23 : typename System::modify_boundary_data>::argument_tags; 24 : } // namespace elliptic