none_t.hpp 998 B

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