Add macro DUNE_CONSTEXPR_ASSERT
- Aug 26, 2016
-
-
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, x) { return CONSTEXPR_ASSERT(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`.
-