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
16namespace boost {
17
18#ifdef BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
19
20namespace detail { struct none_helper{}; }
21typedef int detail::none_helper::*none_t ;
22
23#elif defined BOOST_OPTIONAL_USE_SINGLETON_DEFINITION_OF_NONE
24
25class none_t {};
26
27#else
28
29struct 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