1//
2// ip/bad_address_cast.hpp
3// ~~~~~~~~~~~~~~~~~~~~~~~
4//
5// Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6//
7// Distributed under the Boost Software License, Version 1.0. (See accompanying
8// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9//
10
11#ifndef BOOST_ASIO_IP_BAD_ADDRESS_CAST_HPP
12#define BOOST_ASIO_IP_BAD_ADDRESS_CAST_HPP
13
14#if defined(_MSC_VER) && (_MSC_VER >= 1200)
15# pragma once
16#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
18#include <boost/asio/detail/config.hpp>
19#include <typeinfo>
20
21#include <boost/asio/detail/push_options.hpp>
22
23namespace boost {
24namespace asio {
25namespace ip {
26
27/// Thrown to indicate a failed address conversion.
28class bad_address_cast :
29#if defined(BOOST_ASIO_MSVC) && defined(_HAS_EXCEPTIONS) && !_HAS_EXCEPTIONS
30 public std::exception
31#else
32 public std::bad_cast
33#endif
34{
35public:
36 /// Default constructor.
37 bad_address_cast() {}
38
39 /// Copy constructor.
40 bad_address_cast(const bad_address_cast& other) noexcept
41#if defined(BOOST_ASIO_MSVC) && defined(_HAS_EXCEPTIONS) && !_HAS_EXCEPTIONS
42 : std::exception(static_cast<const std::exception&>(other))
43#else
44 : std::bad_cast(static_cast<const std::bad_cast&>(other))
45#endif
46 {
47 }
48
49 /// Destructor.
50 virtual ~bad_address_cast() noexcept {}
51
52 /// Get the message associated with the exception.
53 virtual const char* what() const noexcept
54 {
55 return "bad address cast";
56 }
57};
58
59} // namespace ip
60} // namespace asio
61} // namespace boost
62
63#include <boost/asio/detail/pop_options.hpp>
64
65#endif // BOOST_ASIO_IP_ADDRESS_HPP
66

source code of boost/libs/asio/include/boost/asio/ip/bad_address_cast.hpp