@@ -552,7 +552,7 @@ vector<pair<string, tuple<vector<shared_ptr<DlFormula>>, vector<string>, map<siz
552552 };
553553 auto updatePrimitives = [&]() {
554554 for (set<shared_ptr<DlFormula>>::iterator it = usedPrimitives.begin (); it != usedPrimitives.end ();)
555- if (it->unique ()) { // default: used by freePrimitives or primitives
555+ if (it->use_count () == 1 ) {
556556 freePrimitives.emplace (*it);
557557 it = usedPrimitives.erase (it);
558558 } else
@@ -941,7 +941,7 @@ shared_ptr<DlFormula> DRuleParser::_parseEnclosedMmPlFormula(const string& strCo
941941 string_view::size_type opEndOffset = source.find (' ' , opBeginOffset);
942942 if (opEndOffset == string_view::npos)
943943 throw invalid_argument (" DRuleParser::parseConsequent(): Invalid formula \" " + myFormula + " \" . There should be a binary operator ending with ' '." );
944- binOp = string (source.begin () + opBeginOffset, opEndOffset - opBeginOffset);
944+ binOp = string (source.data () + opBeginOffset, opEndOffset - opBeginOffset);
945945 return opEndOffset;
946946 };
947947 auto applyUnaryOperators = [&](shared_ptr<DlFormula>& target, const vector<DlOperator>& unaryOperators) -> void {
@@ -968,7 +968,7 @@ shared_ptr<DlFormula> DRuleParser::_parseEnclosedMmPlFormula(const string& strCo
968968 string_view::size_type varEndOffset = source.find (' ' , varBeginOffset);
969969 if (varEndOffset == string_view::npos)
970970 throw invalid_argument (" DRuleParser::parseConsequent(): Invalid formula \" " + myFormula + " \" . Source should contain a variable ending with ' '." );
971- assignVariableTerm (target, string (varBegin, varEndOffset - varBeginOffset), unaryOperators);
971+ assignVariableTerm (target, string (&* varBegin, varEndOffset - varBeginOffset), unaryOperators);
972972 return varEndOffset;
973973 };
974974 auto readAndAssignEndingVariableTerm = [&](const string_view& source, shared_ptr<DlFormula>& target) -> void {
0 commit comments