Opened 12 years ago

Closed 12 years ago

#5397 closed Bugs (invalid)

multi_index_container does not build with exceptions off on some compilers(armcc)

Reported by: anonymous Owned by: Joaquín M López Muñoz
Milestone: To Be Determined Component: multi_index
Version: Boost 1.47.0 Severity: Showstopper
Keywords: multi_index_container armcc exceptions Cc:

Description

with exceptions off, BOOST_TRY and BOOST_CATCH result in these functions not always having a return, making multi_index_container unbuildable in our environment

"../../boost/multi_index_container.hpp", line 503: Error: #940-D: missing return statement at end of non-void function "boost::multi_index::multi_index_container<Value, IndexSpecifierList, Allocator>::insert_(const Value &)"

}

"../../boost/multi_index_container.hpp", line 524: Error: #940-D: missing return statement at end of non-void function "boost::multi_index::multi_index_container<Value, IndexSpecifierList, Allocator>::insert_(const Value &, boost::multi_index::detail::multi_index_base_type<Value, IndexSpecifierList, Allocator>::type::node_type *)"

}

"../../boost/multi_index_container.hpp", line 585: Error: #940-D: missing return statement at end of non-void function "boost::multi_index::multi_index_container<Value, IndexSpecifierList, Allocator>::modify_(Modifier &, boost::multi_index::detail::multi_index_base_type<Value, IndexSpecifierList, Allocator>::type::node_type *) [with Modifier=Modifier]"

}

"../../boost/multi_index_container.hpp", line 621: Error: #940-D: missing return statement at end of non-void function "boost::multi_index::multi_index_container<Value, IndexSpecifierList, Allocator>::modify_(Modifier &, Rollback &, boost::multi_index::detail::multi_index_base_type<Value, IndexSpecifierList, Allocator>::type::node_type *) [with Modifier=Modifier, Rollback=Rollback]"

}

Change History (1)

comment:1 by Joaquín M López Muñoz, 12 years ago

Resolution: invalid
Status: newclosed

This is a bug in your compiler: when exceptions are turned off, control never gets past the try-catch block.

Please try locally redefining the BOOST_CATCH_END macro (line 83 of boost/detail/no_exceptions_support.hpp) as

#    define BOOST_CATCH_END std::terminate();}

Does this solve your problem? If so maybe you can get along by patching your boost distribution this way.

Closing this as a non-bug.

Note: See TracTickets for help on using tickets.