In some environments, such as game development or embedded systems, C++ exceptions are disabled or a customized error handling is needed. According to document N2271 EASTL -- Electronic Arts Standard Template Library exceptions can be disabled for several reasons:
In order to support environments without C++ exception support or environments
with special error handling needs, Boost.Container
changes error signalling behaviour when
BOOST_NO_EXCEPTIONS is defined.
The former shall be defined by the user and the latter can be either defined
by the user or implicitly defined by Boost.Confg
when the compiler has been invoked with the appropriate flag (like
-fno-exceptions in GCC).
When dealing with user-defined classes, (e.g. when constructing user-defined classes):
is defined, the library avoids using
statements. The class writer must handle and propagate error situations
internally as no error will be propagated through Boost.Container.
is not defined, the library propagates
exceptions offering the exception guarantees detailed in the documentation.
When the library needs to throw an exception (such as
when an incorrect index is used in
library calls a throw-callback declared in
is defined, then the programmer must provide its own definition for all
throw_xxx functions. Those
functions can't return, they must throw an exception or call
is defined, a
assertion is triggered (see Boost.Assert
for more information). If this assertion returns, then