Breaking changes for art series 2.11


  • Specifying '-o /dev/null' at the command line will now create/override an output module to write to /dev/null. If disabling output modules is desired, then the --no-output program option should be specified.
  • For art processes that intentionally do not process events (e.g. art --version), the return code will be 0 if no exception was thrown, and the “Art has completed…” statement will be suppressed. If there is an error, the return code will be displayed with the "Art has completed..." statement. In any case, the return code can be ascertained by executing 'echo $?' immediately after the art program exits.


  • art::Ptr<T>s can now be made only to elements in collections that have a const-qualified size() member function. This extra restriction is unlikely to affect anyone.
  • For two identical art::RangeSet objects rs1 and rs2, calling art::overlapping_ranges(rs1, rs2) now returns true instead of false.


  • The following top-level messagefacility configuration parameters are no longer used and should be removed:
    • debugModules
    • suppressDebug
    • suppressInfo
    • suppressWarning
  • The MF_Utilities library has been merged with MF_MesageLogger. All instances of MF_Utilities on link lines should, therefore, be replaced with MF_MessageLogger or removed altogether.
  • For users setting up their own messagefacility instance, please contact for any additional breaking changes.


  • cet::zero_init<T>, a facility for zero-initializing non-static, fundamental types, has been removed. This behavior is now provided by C++11’s uniform initialization syntax.
  • The cet::map_vector<T> functionality has changed substantially:
    • cet::map_vector<T> no longer adjusts the keys of any elements that are to be inserted
    • cet::map_vector<T>::push_back has been removed due to dangerous behavior, and also because it did not reflect a well-defined abstraction of the class. The push_back function has been replaced with insert, which models the same semantics as std::map<K, V>::insert.
    • The cet::map_vector<T>::insert function that takes an iterator range has been changed to has been changed to match the std::map<K, V>::insert(b, e) behavior.
    • The cet::map_vector<T>::operator[] function is still usable.
  • Exception-related headers that forwarded to cetlib_except no longer provide forwarding. Please make the following header-dependency changes:
    From To
    cetlib/coded_exception.h cetlib_except/coded_exception.h
    cetlib/exception.h cetlib_except/exception.h
    cetlib/exception_collector.h cetlib_except/exception_collector.h

To update your header dependencies, a migration script has been provided. After doing a UPS setup of art, type:

find <dir> -regex ".*\.\(h\|hh\|cc\|cpp\|cxx\)" | xargs perl -wapi $ART_DIR/tools/migration/


  • The cet::demangle(std::string const&) function, deprecated as of art 2.06.00 is removed in favor of cet::demangle_symbol(std::string const&).