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.
No, there is none, but this is reason enough. I would always favor ease of use and simplicity over compile time.