inline ScopeGuardOnExit's operator+()
restrictions on ForwardList: non copyable; non move assignable
add FreeList for memory cache management