Add macro DUNE_ASSERT_AND_RETURN
- Oct 17, 2016
-
-
Carsten Gräser authored
Since dune_add_test(... EXPECT_FAIL) does not work with failing assertions, we cannot check if an actual runtime assertion was triggered, but only the compile-time case.
-
Carsten Gräser authored
-
Carsten Gräser authored
In C++11 and with not fully C++14 compliant compilers `constexpr` functions can only have a return statement. This prevents the use of `assert()` inside of `constexpr` functions. This macro can be used as a workaround like this: constexpr auto foo(int a, int b, int x) { return DUNE_AND_RETURN(a<b, x); } For `NDEBUG` there is no penalty. Otherwise there are two options: * In a non-`constexpr` context an `assert()` will fail if the condition is not matched. The error message will be slightly different from a classic assertion. * In a `constexpr` context the `assert()` branch will be ignored if the is condition is matched. Otherwise this will lead to a compile error (like `static_assert`) because the branch using `assert()` is not `constexpr`.
-