0f5a51238b
[SVN r55094]
36 lines
1.1 KiB
C++
36 lines
1.1 KiB
C++
//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);
|
|
//....
|
|
}
|
|
};
|