0,
DoFAccessorImplementation::Implementation::
MGDoFIndexProcessor<dim, spacedim>(cell->level()),
- [&complete](auto &stored_index, auto received_index) {
- if (*received_index != numbers::invalid_dof_index)
+
+ // Intel ICC 18 and earlier for some reason believe that
+ // numbers::invalid_dof_index is not a valid object
+ // inside the lambda function. Fix this by creating a
+ // local variable initialized by the global one.
+ //
+ // Intel ICC 19 and earlier have trouble with our Assert
+ // macros inside the lambda function. We disable the macro
+ // for these compilers.
+ [&complete, invalid_dof_index = numbers::invalid_dof_index](
+ auto &stored_index, auto received_index) {
+ if (*received_index != invalid_dof_index)
{
# if !defined(__INTEL_COMPILER) || __INTEL_COMPILER >= 1900
- Assert((stored_index == (numbers::invalid_dof_index)) ||
+ Assert((stored_index == invalid_dof_index) ||
(stored_index == *received_index),
ExcInternalError());
# endif
DoFAccessorImplementation::Implementation::
DoFIndexProcessor<dim, spacedim>(),
- // Intel ICC 19 and earlier for some reason believe that
+ // Intel ICC 18 and earlier for some reason believe that
// numbers::invalid_dof_index is not a valid object
// inside the lambda function. Fix this by creating a
// local variable initialized by the global one.
+ //
+ // Intel ICC 19 and earlier have trouble with our Assert
+ // macros inside the lambda function. We disable the macro
+ // for these compilers.
[&complete, invalid_dof_index = numbers::invalid_dof_index](
auto &stored_index, const auto received_index) {
if (*received_index != invalid_dof_index)
{
- Assert((stored_index == (invalid_dof_index)) ||
+# if !defined(__INTEL_COMPILER) || __INTEL_COMPILER >= 1900
+ Assert((stored_index == invalid_dof_index) ||
(stored_index == *received_index),
ExcInternalError());
+# endif
stored_index = *received_index;
}
else