C++ std::function

To remember the usage std::function (Parameters)

Example:

bool CCEmailRulesCheckHelper::actionIfNotCompliant(Result const& result, function<void(Result const&)> fn)
{
      switch (result.getCase())
      {
            case Case::NO_EMAIL:
            case Case::NO_MAIN_EMAIL:
            case Case::NO_MAIN_EMAIL_AUTH:
            case Case::NO_REO_EMAIL:
               fn(result);
               return result.isGK() ? true : false;
      }

      return true;
}

Call:

        CCEmailRulesCheckHelper emailRules("BaseProductNew  - " + GetMatchCode());
        auto const result = emailRules.evaluate(pContract);
        bool const canContinue = CCEmailRulesCheckHelper::actionIfNotCompliant(result, 
         [&emailRules](auto result) {
            TMString text = emailRules.getContext() + " : " + result.getMessage();
            TMPROTMSG(CCTreeBaseProductInterface, text);
            int icon = result.isGK() ? MB_ICONINFORMATION : MB_ICONERROR;
            GetWinApp()->GetAppView()->MessageBox(result.getMessage().c_str(), "ccmain", icon | MB_OK);
            return;
         }
        );
 
        if (!canContinue)
            return;