1 | // Copyright (C) 2003, Fernando Luis Cacciola Carballal. |
2 | // Copyright (C) 2014, 2015 Andrzej Krzemienski. |
3 | // |
4 | // Use, modification, and distribution is subject to the Boost Software |
5 | // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at |
6 | // http://www.boost.org/LICENSE_1_0.txt) |
7 | // |
8 | // See http://www.boost.org/libs/optional for documentation. |
9 | // |
10 | // You are welcome to contact the author at: |
11 | // fernando_cacciola@hotmail.com |
12 | // |
13 | #ifndef BOOST_NONE_T_17SEP2003_HPP |
14 | #define BOOST_NONE_T_17SEP2003_HPP |
15 | |
16 | namespace boost { |
17 | |
18 | #ifdef BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE |
19 | |
20 | namespace detail { struct none_helper{}; } |
21 | typedef int detail::none_helper::*none_t ; |
22 | |
23 | #elif defined BOOST_OPTIONAL_USE_SINGLETON_DEFINITION_OF_NONE |
24 | |
25 | class none_t {}; |
26 | |
27 | #else |
28 | |
29 | struct none_t |
30 | { |
31 | struct init_tag{}; |
32 | explicit none_t(init_tag){} // to disable default constructor |
33 | }; |
34 | |
35 | #endif // old implementation workarounds |
36 | |
37 | } // namespace boost |
38 | |
39 | #endif // header guard |
40 | |