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