$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Peter Soetens (peter.soetens_at_[hidden])
Date: 2007-11-13 10:54:15
Hi,
Upto boost 1.33.x, I could compile my program with the gcc 
option -fno-exceptions. Since boost 1.34.0, this is no longer possible due to 
code changes in operator= in boost/function/function_template.hpp
The following snippets fail to compile:
Line 561-571:
    operator=(Functor BOOST_FUNCTION_TARGET_FIX(const &) f)
    {
      this->clear();
      try {
        this->assign_to(f);
      } catch (...) {
        vtable = 0;
        throw;
      }
      return *this;
    }
and lines 589-602:
    // Assignment from another BOOST_FUNCTION_FUNCTION
    BOOST_FUNCTION_FUNCTION& operator=(const BOOST_FUNCTION_FUNCTION& f)
    {
      if (&f == this)
        return *this;
      this->clear();
      try {
        this->assign_to_own(f);
      } catch (...) {
        vtable = 0;
        throw;
      }
      return *this;
    }
The 1.33.0 and older versions used swap() instead of this try / catch / throw 
construct. These versions also used the boost::throw_exception function 
instead of a plain throw.
Any rationale for this decision ? Should some/all boost functions compile 
exception free as well ? I'm using -fno-exceptions on embedded systems.
Peter
-- Peter Soetens -- FMTC -- <http://www.fmtc.be>