// Workaround to allow for commas in template parameter lists
// in preprocessor macros as found in
// https://stackoverflow.com/questions/13842468/comma-in-c-c-macro
- template <typename T>
+ template <typename F>
struct argument_type;
template <typename T, typename U>
{
using type = U;
};
+
+ template <typename F>
+ using argument_type_t = typename argument_type<F>::type;
} // namespace internal
/**
*
* @ingroup Exceptions
*/
-#define AssertIndexRange(index, range) \
- Assert( \
- ::dealii::deal_II_exceptions::internals::compare_less_than(index, range), \
- dealii::ExcIndexRangeType<typename ::dealii::internal::argument_type<void( \
- std::common_type_t<decltype(index), decltype(range)>)>::type>((index), \
- 0, \
- (range)))
+#define AssertIndexRange(index, range) \
+ Assert(::dealii::deal_II_exceptions::internals::compare_less_than(index, \
+ range), \
+ dealii::ExcIndexRangeType<::dealii::internal::argument_type_t<void( \
+ std::common_type_t<decltype(index), decltype(range)>)>>((index), \
+ 0, \
+ (range)))
/**
* An assertion that checks whether a number is finite or not. We explicitly