Forward declarations for std::stack are not standard conformant.

Forward declarations for std::stack are not standard conformant. Implementations (like the one I am using) are allowed to require complete types.

'if ( !transactions.size( ) > 1 )' is useless because it always returns false. Even the correct version without the ! does not catch the case of the missing last transaction.
Just removing Transaction.hpp is not possible because without it, Transaction would be undefined.
This is due to the eventSystem/EventSystem.hpp being included by some code which in turn includes MPITask.hpp which includes TransactionManager.hpp which trys to include eventSystem/EventSystem.hpp (for definition of Transaction) where the compiler sees a cycle and stops inclusion. So Transaction.hpp is not included.
Now I see why there was a need to forward declare Transaction (and Environment and EventStream) in the first place even though EventSystem.hpp was included. This was a hack to hide the cyclic inclusion problems with the super header.
I just want to say that the easy way has some problems when used inside the event system itself. I have no problem with using it from other code.