none_t.hpp 953 B

123456789101112131415161718192021222324252627282930313233343536373839
  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. namespace boost {
  16. #ifdef BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
  17. namespace detail { struct none_helper{}; }
  18. typedef int detail::none_helper::*none_t ;
  19. #elif defined BOOST_OPTIONAL_USE_SINGLETON_DEFINITION_OF_NONE
  20. class none_t {};
  21. #else
  22. struct none_t
  23. {
  24. struct init_tag{};
  25. explicit none_t(init_tag){} // to disable default constructor
  26. };
  27. #endif // old implementation workarounds
  28. } // namespace boost
  29. #endif // header guard