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 BOOST_BORLANDC 24 # pragma warn -8026 // Functions with excep. spec. are not expanded inline 25 #endif 26 27 namespace 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(BOOST_BORLANDC) && BOOST_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 46 class bad_weak_ptr: public std::exception 47 { 48 public: 49 what() const50 char const * what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE 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(BOOST_BORLANDC) && BOOST_BORLANDC <= 0x564 61 # pragma option pop 62 #endif 63 64 } // namespace boost 65 66 #ifdef BOOST_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