1#ifndef BOOST_SMART_PTR_BAD_WEAK_PTR_HPP_INCLUDED
2#define BOOST_SMART_PTR_BAD_WEAK_PTR_HPP_INCLUDED
3
4// MS compatible compilers support #pragma once
5
6#if defined(_MSC_VER) && (_MSC_VER >= 1020)
7# pragma once
8#endif
9
10//
11// boost/smart_ptr/bad_weak_ptr.hpp
12//
13// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
14//
15// Distributed under the Boost Software License, Version 1.0. (See
16// accompanying file LICENSE_1_0.txt or copy at
17// http://www.boost.org/LICENSE_1_0.txt)
18//
19
20#include <boost/config.hpp>
21#include <exception>
22
23#ifdef __BORLANDC__
24# pragma warn -8026 // Functions with excep. spec. are not expanded inline
25#endif
26
27namespace boost
28{
29
30// The standard library that comes with Borland C++ 5.5.1, 5.6.4
31// defines std::exception and its members as having C calling
32// convention (-pc). When the definition of bad_weak_ptr
33// is compiled with -ps, the compiler issues an error.
34// Hence, the temporary #pragma option -pc below.
35
36#if defined(__BORLANDC__) && __BORLANDC__ <= 0x564
37# pragma option push -pc
38#endif
39
40#if defined(BOOST_CLANG)
41// Intel C++ on Mac defines __clang__ but doesn't support the pragma
42# pragma clang diagnostic push
43# pragma clang diagnostic ignored "-Wweak-vtables"
44#endif
45
46class bad_weak_ptr: public std::exception
47{
48public:
49
50 virtual char const * what() const throw()
51 {
52 return "tr1::bad_weak_ptr";
53 }
54};
55
56#if defined(BOOST_CLANG)
57# pragma clang diagnostic pop
58#endif
59
60#if defined(__BORLANDC__) && __BORLANDC__ <= 0x564
61# pragma option pop
62#endif
63
64} // namespace boost
65
66#ifdef __BORLANDC__
67# pragma warn .8026 // Functions with excep. spec. are not expanded inline
68#endif
69
70#endif // #ifndef BOOST_SMART_PTR_BAD_WEAK_PTR_HPP_INCLUDED
71