ConditionalActions through std::function Lambdas
This is long winded:
std::vector&lt;CConditionalAction&gt; vecConditionalActions;
vecConditionalActions.push_back(FirstConditionalAction);
vecConditionalActions.push_back(SecondConditionalAction);
//vecConditionalActions.push_back(MoreConditionalActions);
vecConditionalActions.push_back(LastConditionalAction);

Easier to use the constructor to put everything in place.
std::vector&lt;CConditionalAction&gt; vecConditionalActions
    {
        FirstConditionalAction,
        SecondConditionalAction,
        // MoreConditionalActions,
        LastConditionalAction
    };

// Note: You should probably make that a static variable so it is
//       only built once the first time it is created.

I don't see the point in writing a functor to hold a functor (a lambda) then wrap that in a functor (std::function) to hold in a vector. The whole CConditionalAction class is not necessary.
std::vector&lt;std::function&lt;bool()&gt;&gt; vecConditionalActions {
        [&amp;](){if (false){return true;}return false;},
        ....
    };
        

I am surprised this compiles:
std::function&lt;bool()&gt; m_ConditionalAction = nullptr;
                                      ///   ^^^^^^^^

But it does. But what does it mean? Not sure. Not sure I want to find out either as there is no pointer semantics involved here. But since you have a constructor this will never be activated anyway. Writing code that has no clear meaning is a bad idea.
I am assuming your code in the lambdas is just example code as it does nothing.
Final Thought.
The point of this exercise was:

to make a huge if-else construct more human readable, extendable and configurable (switch positions of conditions)

I don't think you have a succeeded. I think this code just makes the code more obscure by hiding the actions in a separate file.