// columns are sorted within each
// row correctly, but excluding
// the main diagonal entry
- const int global_index_ki = sparsity(*col_ptr,row);
+ //
+ // the explicit use of operator()
+ // works around a bug in some gcc
+ // versions (see PR 18803)
+ const int global_index_ki = sparsity.operator()(*col_ptr,row);
if (global_index_ki != -1)
this->diag_element(row) -= this->global_entry(global_index_ik) *
// row linearly. I just didn't
// have the time to figure out
// the details.
+ //
+ // the explicit use of
+ // operator() works around a
+ // bug in some gcc versions
+ // (see PR 18803)
const int global_index_ij = j - &column_numbers[0],
- global_index_kj = sparsity(*col_ptr,*j);
+ global_index_kj = sparsity.operator()(*col_ptr,*j);
if ((global_index_ij != -1) &&
(global_index_kj != -1))
this->global_entry(global_index_ij) -= this->global_entry(global_index_ik) *
// matrix. if not, then leave
// the value in the small
// matrix at zero
+ //
+ // the explicit use of operator()
+ // works around a bug in some gcc
+ // versions (see PR 18803)
const unsigned int global_entry =
- structure(local_indices[i], local_indices[j]);
+ structure.operator()(local_indices[i], local_indices[j]);
if (global_entry != SparsityPattern::invalid_entry)
this_inverse(i,j) = matrix->global_entry(global_entry);
};