template<typename ValueType>
class CASM::DB::DatabaseIteratorBase< ValueType >
Dereferencing DatabaseIteratorBase only provides const references, whether the underlying resource is persistent (Supercell) or temporary (other types). Changing database entries must be done via copy then insert, or update.
DatabaseIteratorBase should always be dereferenceable (except end or when default constructed), though the reference may be invalidated when a second DatabaseIteratorBase is dereferenced, dereferencing the first again should be valid (though it may require re-allocation):
DerivedDatabaseIterator A = ...
get from DerivedDatabase ...;
const ValueType& A_ref1 = *A;
A_ref1.method();
A->method();
DerivedDatabaseIterator B = ...
get from DerivedDatabase ...;
const ValueType& B_ref = *B;
A_ref1.method();
A->method();
B->method();
const ValueType& A_ref2 = *A;
A_ref1.method();
A_ref2.method();
B_ref.method();
A->method();
B->method();
DoFSpecsType const & get(DoFKey const &key, BasisFunctionSpecs const &basis_function_specs)
Derived classes must implement private methods:
Definition at line 81 of file Database.hh.