1 // Copyright (C) 2003, Fernando Luis Cacciola Carballal.
2 // Copyright (C) 2014 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 prevent default constructor
33 };
34 
35 #endif // old implementation workarounds
36 
37 } // namespace boost
38 
39 #endif // header guard
40 
41