1234567891011121314151617181920212223242526272829303132333435 |
- //Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc.
- //Distributed under the Boost Software License, Version 1.0. (See accompanying
- //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- //This example shows how to throw exception objects that support
- //transporting of arbitrary data to the catch site, even for types
- //that do not derive from boost::exception.
- #include <boost/exception/all.hpp>
- #include <stdexcept>
- typedef boost::error_info<struct tag_std_range_min,size_t> std_range_min;
- typedef boost::error_info<struct tag_std_range_max,size_t> std_range_max;
- typedef boost::error_info<struct tag_std_range_index,size_t> std_range_index;
- template <class T>
- class
- my_container
- {
- public:
- size_t size() const;
- T const &
- operator[]( size_t i ) const
- {
- if( i > size() )
- throw boost::enable_error_info(std::range_error("Index out of range")) <<
- std_range_min(0) <<
- std_range_max(size()) <<
- std_range_index(i);
- //....
- }
- };
|