1 // Copyright (C) 2014, Andrzej Krzemienski.
2 //
3 // Use, modification, and distribution is subject to the Boost Software
4 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // See http://www.boost.org/libs/optional for documentation.
8 //
9 // You are welcome to contact the author at:
10 //  [email protected]
11 //
12 #ifndef BOOST_BAD_OPTIONAL_ACCESS_22MAY2014_HPP
13 #define BOOST_BAD_OPTIONAL_ACCESS_22MAY2014_HPP
14 
15 #include <stdexcept>
16 #if __cplusplus < 201103L
17 #include <string> // to make converting-ctor std::string(char const*) visible
18 #endif
19 
20 namespace boost {
21 
22 #if defined(__clang__)
23 # pragma clang diagnostic push
24 # pragma clang diagnostic ignored "-Wweak-vtables"
25 #endif
26 
27 class bad_optional_access : public std::logic_error
28 {
29 public:
bad_optional_access()30   bad_optional_access()
31     : std::logic_error("Attempted to access the value of an uninitialized optional object.")
32     {}
33 };
34 
35 #if defined(__clang__)
36 # pragma clang diagnostic pop
37 #endif
38 
39 } // namespace boost
40 
41 #endif
42